欢迎您, 来到 宁时修博客.^_^

Docker 启用 Gitlab-ce -- 03、更换映射端口和处理CI/CD问题

2020/03/31 林木立 Docker 136
更换之前的gitlab映射端口,以及更换端口之后的 gitlab CI/CD 故障处理

一、更换gitlab映射端口

    gitlab运行过程中遇到调整服务器,之前映射的80端口需要给其它服务使用,所以现在需要给gitlab映射新的端口。

    由于之前部署的gitlab运行了一段时间,提交过很多代码,所以不能删除原容器,再新建一个,这样会很麻烦。

    因此,我们这样做。

    修改docker gitlab容器配置文件,这种方式需要几个步骤:

    1、停止所有docker容器,docker stop CONTAINER ID。

    2、停止docker服务,systemctl stop docker。

    3、修改指定的docker gitlab容器配置文件。                      

         /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json

         hash_of_the_container 是docker容器的hash值。

$ docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                 PORTS                                                                                        NAMES
69310fd1bf0c        twang2218/gitlab-ce-zh:11.1.4   "/assets/wrapper"        6 months ago        Up 2 hours (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:222->22/tcp, 0.0.0.0:443->443/tcp                         gitlab

        这是我们之前的gitlab容器。

        现在我们修改它的配置。

$ vim /var/lib/docker/containers/69310fd1bf0ca6c18a63b74fc64cd0b575efde2fd9db0363146c3e63260378ca/hostconfig.json

找到如下内容:
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"222"}],"443/tcp":[{"HostIp":"","HostPort":"443"}],"80/tcp":[{"HostIp":"","HostPort":"80"}]},


"22/tcp" 是容器端口,"HostPort":"222" 是宿主机端口。
将其修改成我们需要的端口号,保存即可。
如果需要新添加映射端口,按照上面这行的格式添加一个即可。

现在将其改成如下:
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"222"}],"443/tcp":[{"HostIp":"","HostPort":"8443"}],"80/tcp":[{"HostIp":"","HostPort":"8000"}]},

避免占用 80和443端口。

          保存修改。

    4、启动docker服务,systemctl start docker。

    5、启动刚才关闭的所有容器,docker start CONTAINER ID


    注意:修改了映射端口后,提交、拉取代码要在原有的URL上加上端口,如:之前的URL是 http://47.16.14.91/cg/admin-pc,现在是 http://47.16.14.91:8000/cg/admin-pc


    修改映射端口不止这一种方法,挑选适用的即可。

    这个方法的优点是没有副作用,操作简单。缺点是需要重启整个docker服务,如果在同一个宿主机上运行着多个容器服务的话,就会影响其他容器服务。



二、处理gitlab的CI/CD故障

    刚才已将gitlab的映射端口修改了,也能正常打开gitlab,提交和拉取代码。

    但是gitlab自带的CI/CD功能却出问题了,如下:

Running with gitlab-runner 11.5.1 (7f00c780)
  on test 4549bddf
Using Shell executor...
Running on cg...
Cloning repository...
Cloning into '/home/gitlab-runner/builds/4549bddf/0/cg/admin-pc'...
fatal: repository 'http://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@47.16.14.91/cg/admin-pc.git/' not found
bash: line 57: cd: /home/gitlab-runner/builds/4549bddf/0/cg/admin-pc: No such file or directory
ERROR: Job failed: exit status 1

    找不到 admin-pc 这个仓库了,这和之前所用的地址一样啊,为什么用不了?

    发现问题没有?

    刚才我们修改了gitlab的映射端口,现在拉取代码的地址应该是这样的:http://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@47.16.14.91:8000/cg/admin-pc.git。

    So,还使用80端口是错误的,因为我们只是将gitlab 容器的端口映射出来,并没有更改其自身的端口,因此需要更改gitlab的端口。

    操作如下:

$ docker exec -it gitlab bash
root@47:/# vim /etc/gitlab/gitlab.rb
# external_url 'GENERATED_EXTERNAL_URL'
改成:
external_url '47.16.14.91:8000'
添加:
nginx['listen_port'] = 8000

    保存并退出gitlab容器。

    这样就更改的gitlab的监听端口,但是我们映射指定的gitlab端口还是之前的端口,所有又要去修改gitlab容器映射端口配置。

    还是上一节的操作,停止所有容器,停止docker服务后,再去修改配置文件:

$ vim /var/lib/docker/containers/69310fd1bf0ca6c18a63b74fc64cd0b575efde2fd9db0363146c3e63260378ca/hostconfig.json

找到如下内容:
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"222"}],"443/tcp":[{"HostIp":"","HostPort":"8443"}],"80/tcp":[{"HostIp":"","HostPort":"8000"}]},

修改成:
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"222"}],"443/tcp":[{"HostIp":"","HostPort":"8443"}],"8000/tcp":[{"HostIp":"","HostPort":"8000"}]},

    保存后,还需要再加一步操作,需要修改同路径下config.v2.json文件:

$ vim /var/lib/docker/containers/69310fd1bf0ca6c18a63b74fc64cd0b575efde2fd9db0363146c3e63260378ca/config.v2.json

找到如下内容:
"ExposedPorts":{"22/tcp":{},"443/tcp":{},"80/tcp":{}},

修改成:
"ExposedPorts":{"22/tcp":{},"443/tcp":{},"8000/tcp":{}},

    保存后就可以启动docker服务,再启动所有的docker容器。


    这样配置后,再去查看gitlab CI/CD功能:

Running with gitlab-runner 11.5.1 (7f00c780)
  on test 4549bddf
Using Shell executor...
Running on cg...
Fetching changes...
HEAD is now at 7c5c35d test
From http://47.16.14.91:8000/cg/admin-pc
   7c5c35d..5759c68  test       -> origin/test
Checking out 5759c680 as test...
Skipping Git submodules setup

    现在已经可以使用了。    



点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群