一、简介
操作系统:Linux CentOS 7.3 64位
docker版本:19.03.8
gitlab版本:默认拉取最新版本
服务器配置不能太低, gitlab比较耗资源,安装运行后内存可能占了4、5G, 这也是它功能强大的来源。
二、实践
1、拉取镜像
docker pull beginor/gitlab-ce
拉取完成后,查看镜像
docker images
可以看到gitlab镜像已经拉取成功了,大小有1.5GB。
2、由于是docker镜像运行, 所以我们需要把gitlab的配置, 数据, 日志存到容器外面, 即将其挂载到宿主机
先准备三个目录:
mkdir -p /home/mvn/gitlab/etc
mkdir -p /home/mvn/gitlab/logs
mkdir -p /home/mvn/gitlab/data
3、运行gitlab容器
docker run \
--detach \
--publish 8443:443 \
--publish 8090:80 \
--publish 8022:22 \
--name gitlab \
--restart always \
--hostname 47.98.183.103 \
-v /home/mvn/gitlab/etc:/etc/gitlab \
-v /home/mvn/gitlab/logs:/var/log/gitlab \
-v /home/mvn/gitlab/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime:ro \
--privileged=true beginor/gitlab-ce
参数的含义分别是:
docker run \
--detach \
--publish 8443:443 \ # 映射https端口, 不过本文中没有用到
--publish 8090:80 \ # 映射宿主机8090端口到容器中80端口
--publish 8022:22 \ # 映射22端口, 可不配
--name gitlab \
--restart always \
--hostname 47.98.183.103 \ # 局域网宿主机的ip, 如果是公网主机可以写域名
-v /home/mvn/gitlab/etc:/etc/gitlab \ # 挂载gitlab的配置文件
-v /home/mvn/gitlab/logs:/var/log/gitlab \ # 挂载gitlab的日志文件
-v /home/mvn/gitlab/data:/var/opt/gitlab \ # 挂载gitlab的数据
-v /etc/localtime:/etc/localtime:ro \ # 保持宿主机和容器时间同步
--privileged=true beginor/gitlab-ce # 在容器中能以root身份执行操作
启动需要几分钟,输出以下指令可以查看容器运行状态
docker ps
如果显示health: starting 那么表示容器正在启动中
这时候去访问监听的ip:端口,会显示502
这时候就需要再等等,等启动完成了,会显示healthy
这时候去访问监听的ip:端口,我这里是http://47.98.183.103:8090/
第一次访问时,将被重定向到密码重置屏幕, 默认帐户的用户名是root, 登录后, 您可以更改用户名。
需要注意的是,这里我将密码设置成admin,但是报了500的错误,后来改成admin123456就可以了。可能对密码的复杂度有要求。
登陆后
4、配置邮箱
gitlab还需要配置邮箱,类似创建账号邮箱激活、一些账号权限改动之类的都会进行邮箱通知这些都要配置邮件发送功能。
修改配置文件 gitlab.rb (启动镜像后产生的文件), 这里我配置的是QQ邮箱
vim /home/mvn/gitlab/etc/gitlab.rb
在文件的最后加上配置:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "邮箱@qq.com"
gitlab_rails['smtp_password'] = "这里填写邮箱授权码"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '邮箱@qq.com'
再另外开一个终端, 进入容器:
docker exec -it gitlab /bin/bash
此时已经进入docker容器了, 容器中执行命令重新配置gitlab:
gitlab-ctl reconfigure
现在可以测试邮件是否配置正确了, 同样容器中执行:
gitlab-rails console # 进入邮件控制台, 稍等一会才能进入
Notify.test_email('邮箱@qq.com', 'Message Subject', 'Message Body').deliver_now # 发送测试邮件
之后查看你的邮箱,可以看到已经收到了测试邮件。
如果收不到邮件的话,有可能是配置错误、没有网络、邮件在垃圾箱。
邮件配置完成后, 需要配置项目路径 (如果你预留的gitlab映射端口是80的话, 到这里已经配置完了), 如果host和port不对, 在宿主机中 (容器外面) 修改文件gitlab.yml,
vim /home/mvn/gitlab/data/gitlab-rails/etc/gitlab.yml
改完之后在容器中重启gitlab就配置完成了。 注意: 此时不能再重新配置(gitlab-ctl reconfigure), 否则可能会改变刚修改的gitlab.yml文件
gitlab-ctl restart