2021-01-07 docker中部署gitlab

docker中部署docker(gitlab lfs push报错)

转载源:https://www.cnblogs.com/diaomina/p/12830449.html 仅仅做了部分修改(直接进行1.1和3部分即可完成部署)。

1.pull gitlab镜像并启动容器

1.1拉取镜像:

sudo docker pull gitlab/gitlab-ce

1.2启动容器:

docker run -itd -p 9980:80 -p 9922:22 -v /usr/local/gitlab-test/etc:/etc/gitlab -v /usr/local/gitlab-test/log:/var/log/gitlab -v /usr/local/gitlab-test/opt:/var/opt/gitlab --restart always --privileged=true --name gitlab-test gitlab/gitlab-ce
命令解释:
-i 以交互模式运行容器,通常与 -t 同时使用命令解释:

-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用

-d 后台运行容器,并返回容器ID

-p 9980:80 将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口

-p 9922:22 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口

-v /usr/local/gitlab-test/etc:/etc/gitlab 将容器/etc/gitlab目录挂载到宿主机/usr/local/gitlab-test/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样

–restart always 容器自启动

–privileged=true 让容器获取宿主机root权限

–name gitlab-test 设置容器名称为gitlab-test

gitlab/gitlab-ce 镜像的名称,这里也可以写镜像ID

2.docker 容器内配置ip和端口

2.1进入docker容器:

docker exec -it gitlab-test /bin/bash

2.2修改容器内的gitlab.rb
vi /etc/gitlab/gitlab.rb
 
# 这个文件是全注释掉了的,所以直接在首行添加如下配
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.52.128'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.52.128'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

注意(此处还有问题):此处服务器为安装了docker的主机,容器为docker中安装了gitlab的容器。2.2中的external_url ‘http://192.168.52.128’,原文中存在:9980,但是,通过测试添加后,会导致不能网页登录gitlab,所以不能添加:9980,这里:9980意思是将容器中gitlab监听哪一个端口,如果添加后容器中gitlab会监听9980端口,然后容器运行时候的映射是服务器9980端口映射到容器80端口,但是容器中gitlab监听容器9980端口,所以网页访问192.168.52.128:9980的时候会显示连接失败等信息,因为这样的访问是通过服务器9980端口访问了容器80端口,然后容器gitlab在监听容器的9980端口,所以访问失败,所以不能添加:9980,映射还是服务器9980容器80,并且gitlab在监听容器80端口,所以后面能正常访问

2.3更新配置,重启gitlab

gitlab-ctl reconfigure
gitlab-ctl restart

2.4访问gitlab

浏览器输入192.168.52.128:9980会出现gitlab初次登录的修改密码界面。

2.5出现问题

当需要部署gitlab lfs时候,push过程中出现问题,普通工程能进行push,但是包含lfs大文件存储时候,push会报错如下图,见lfs官网
错误意思是,lfs 工程中通过ssh方式仓库最终会通过https链接设置一下lfs.http就行了,给出了解决方式。但是,我遇到的问题没解决。然后我根据报错,通过http git clone一下,出现了问题,同样会报错80端口出现问题,我设置http是通过9980映射到80的这里直接报错,所以进行了各种尝试,最终通过成功的设置为ssh端口需要主机设置一个自设端口例如9922映射到固定的容器端口22,http端口需要主机和容器一致都是9980,或者都是80也可以,前提是端口没被占用。先面给出了说明和设置。

3.gitlab最终设置

3.1修改docker映射端口和docker中.rb文件

按照第2步中的修改,仅仅能用ssh进行clone,不能用http进行clone。问题在于http的端口映射出现问题,docker中http的端口必须与容器映射一致,不然会出问题,尽管按照2中external_url 'http://192.168.52.128'设置.rb文件能够访问网页的gitlab,但是不能用 http方式进行git clone ,因为在clone的时候会访问80端口,这就造成问题;此时只能用ssh方式git clone,但是如果需要用到lfs时候就会出现问题。
还有一个问题就是docker进行shh端口映射时候主机端口必须映射到容器的22端口,外部随意,最终版本的docker 命令和.rb设置如下:
docker run -itd -p 9980:9980 -p 9922:22 -v /usr/local/gitlab-test/etc:/etc/gitlab -v /usr/local/gitlab-test/log:/var/log/gitlab -v /usr/local/gitlab-test/opt:/var/opt/gitlab --restart always --privileged=true --name gitlab-test gitlab/gitlab-ce

vi /etc/gitlab/gitlab.rb
 
# 这个文件是全注释掉了的,所以直接在首行添加如下配
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.52.128:9980'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.52.128'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

其他的后面再进行尝试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值