花了一整个宝贵的晚上跟这玩意儿战斗……有必要记录一下过程中遇到的种种麻烦,前人栽树,后人乘凉。
官网上给出的示例docker-compose.yml
里是这样写的:
web:
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
我们一条一条来看里面的坑:
- 端口占用
我就不信- '22:22'
在一般机子上能跑的起来,除非SSH端口早就被改了。如果SSH还想继续使用22端口的话,这句需要改成诸如- '22222:22'
这样的,把Gitlab用的SSH端口映射到主机的22222端口去。当然其他端口同理。 -
环境变量
你是不是把- '$GITLAB_HOME/config:/etc/gitlab'
这句原封不动抄进去了?看来也没仔细读官网说明呀……官网说明开头原话:For Linux users, set the path to /srv/gitlab:
export GITLAB_HOME=/srv/gitlab我觉得更稳妥的方法是不要用环境变量,直接把
$GITLAB_HOME
改成/srv/gitlab
比较靠谱。 -
特权模式
有人说这俩坑都避过去了,为啥docker-compose up -d
之后用docker ps
看到容器还是在循环重启?
你用docker logs <容器ID>
看一眼日志,怕不是会看到一行醒目的信息:
cp: cannot create regular file '/etc/gitlab/gitlab.rb': Permission denied
你需要做的是删掉这个容器,然后在docker-compose.yml
的内容下面加一行:
web:
image: 'gitlab/gitlab-ee:latest'
# 中间省略
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
# 以下为追加内容
privileged: true
以此让容器运行在特权模式。
至此我们的Gitlab应该是能跑起来了。这玩意儿启动贼慢,只要你在docker ps
看到容器还是“starting”状态,那等就是了。
然而你以为这就完了?
-
管理员账户是啥
按理说初次访问Gitlab网页应该是会让你初始化管理员用户名和密码的。然而有时候一通骚操作下来偏偏就直接进了登陆界面,导致不知道密码(用户名是root)无法登录。
这时候请打开$GITLAB_HOME/config/initial_root_password
文件查看初始密码。(可别再把$GITLAB_HOME
原封不动抄进去啊) -
点击Clone后Host名不对劲
在项目中点击“Clone”后出现git@<数字+字母>:gitlab-instance-65ed320f/Monitoring.git
这样的地址,怕不是在compose文件中忘了设置hostname吧。把这个字段加上,然后删掉当前容器重新up运行。当然Host名设置有误也可以用同样的办法修正。 -
执行
git clone
后被询问密码
还记得你改了git的端口吗?这时候就不能直接clone了,需要把命令改成:
git clone ssh://git@<地址>:<自定义端口>/gitlab-instance-65ed320f/Monitoring.git