赞
踩
gitlab rpm包需要依赖 openssh-server,而suse系统自带openssh(含client和server端)。
--nodeps --force
强制跳过依赖,能正常安装完毕。但是本人在公司内网机器环境下gitlab-ctl status
命令有些服务是down,查日志无果。放弃我们准备两台Linux机器
B机器执行
A机器安装镜像(参考官网文档 https://docs.gitlab.cn/jh/install/docker.html)
mkdir -p /data04/gitlab/config
mkdir -p /data04/gitlab/logs
mkdir -p /data04/gitlab/data
chmod 777 /data04/gitlab/config
chmod 777 /data04/gitlab/logs
chmod 777 /data04/gitlab/data
docker run --detach \
–publish 8443:443 --publish 8888:80 --publish 8222:22 \
–name gitlab --restart unless-stopped \
–volume /data04/gitlab/config:/etc/gitlab \
–volume /data04/gitlab/logs:/var/log/gitlab \
–volume /data04/gitlab/data:/var/opt/gitlab \
–privileged=true \
gitlab/gitlab-ce:latest
记得带上–privileged=true,让容器获取宿主机root权限。不写之后会有权限相关错误
#进入容器: docker exec -it gitlab /bin/bash #修改gitlab.rb: vi /etc/gitlab/gitlab.rb #加入如下 #gitlab访问地址,可以写域名。如果端口不写的话默认为80端口,端口和docker -p参数要对应 external_url 'http://B机器的IP' #ssh主机ip gitlab_rails['gitlab_ssh_host'] = '192.168.124.194' #ssh连接端口 gitlab_rails['gitlab_shell_ssh_port'] = 9922 # 让配置生效 gitlab-ctl reconfigure # 重启 gitlab-ctl restart
启动前请参考 https://zhuanlan.zhihu.com/p/546533347 文章调小puma 核数,否则会按你机器的核数不断加线程吃内存,导致前端浏览器概率爆500、502错误,但是刷新几次又可以正常使用的情况!
注意:在修改配置文件中的external_url时,如果你的url前缀是http,则GitLab容器会在80端口提供web服务;如果你的url前缀是https,则GitLab容器会在443端口提供web服务;如果你的这个url后面带了端口,则会在相应的端口提供web服务。
注意弄好容器的端口映射关系
#启动
gitlab-ctl restart
前端浏览器访问:http://B机器的IP:8888
。
第一次用root账号登录
root密码在
cat /data04/gitlab/etc/initial_root_password
文件中,24h该文件会被 gitlab-ctl reconfigure 删除
docker stats #查看docker容器的性能消耗
docker exec -it 容器名 /bin/bash 浸入容器
external_url 要不要写成 'ip:port’带端口的形式?
上述安装启动容器时--publish 8888:80
参数会导致一个问题:
在external_url设置ip+port却无法访问到GitLab,如果直接设置成ip地址可以访问但是在项目的checkout地址一栏,其git地址却不包含端口号,导致http的checkout地址不可用。在用http方式clone项目需要手动补上端口号8888。
解决办法:https://zhuanlan.zhihu.com/p/46275204
/var/opt/gitlab/nginx/conf/gitlab-http.conf
。--publish 8888:80
参数的意思是,将容器端口80映射到宿主机8888。也就是说,我们没有改gitlab容器的默认http端口80,只是在docker映射时改到了对外宿主机的端口到8888。80到8888 是docker在“容器外”做的映射。external_url
的写法不需要带端口,直接ip就行了。对于docker容器外的访客来说,则需要在浏览器带端口ip:8888
去访问参考:https://www.hash070.top/archives/gitlab-withdocker.html
上述说了一大堆,总结下
--publish 80:80
,那么一切正常,external_url
只需要填写http://ip
即可。前端浏览器访问http://ip
即可;--publish 你自定义非80的端口:80
,external_url
填写http://ip
不能带端口,前端浏览器访问http://ip:你自定义非80的端口
。这样会导致一个问题:你在用http的方式clone项目的时候,http url会不带端口,导致clone失败!需要手动补充端口,例如:http://ip:你自定义非80的端口/XXX/项目名.git
。(ssh clone是正常带端口的,前面在gitlab.rb配置了gitlab_shell_ssh_port)--publish 你自定义非80的端口:你自定义非80的端口
并将external_url
改为http://ip:你自定义非80的端口
,官网这里的的例子就是--publish 8989:8989
,external_url改为http://ip:8989
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。