在docker hub上的镜像介绍:https://hub.docker.com/r/gitlab/gitlab-ce/
gitlab官方的关于如何使用gitlab的docker image文档:https://docs.gitlab.com/omnibus/docker/
1. 拉取镜像
docker image pull gitlab/gitlab-ce:latest
2. 启动容器
docker run --detach \
--hostname gitlab.xxx.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /var/docker-date/gitlab-server/config:/etc/gitlab \
--volume /var/docker-date/gitlab-server/logs:/var/log/gitlab \
--volume /var/docker-date/gitlab-server/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
--publish
中的三个端口可以自行指定,后续web访问和git使用的时候注意端口号不同即可。
服务启动时间较长,请耐心等待,关于启动的日志可用如下命令查看:
docker container logs -f gitlab
,也可用docker container ls
,查看status状态栏里面的显示情况,当显示有(healthy)的时候,代表启动完成。
3. 配置gitlab
默认情况下不用修改什么,也可直接访问gitlab页面。
gitlab的配置文件为:/var/docker-date/gitlab-server/config/gitlab.rb
3.1 邮件
邮件是GitLab不得不配置的一块, 它提供了代码提交提醒, 用户注册、密码找回等功能。
GitLab也提供了几种邮件配置方案, 包含sendmail, postfix 及 smtp, 这里只介绍smtp。
修改配置文件内如下内容:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtpdm.aliyun.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "admin@xxx.com"
gitlab_rails['smtp_password'] = "xxx"
gitlab_rails['smtp_domain'] = "smtpdm.aliyun.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = 'admin@xxx.com'
这里使用阿里云的“邮件推送”产品里面的smtp相关配置,一个月可以免费发送200封邮件。当然你也可以使用其他smtp服务,你自己的个人邮箱应该也可以。
邮件测试,修改完配置后,首先重启容器:
docker restart gitlab
有时候重启可能会报错,这时候建议删除容器,然后重新启动一个新容器。
进入容器:
docker container exec -it gitlab bash
进入gitlab自己的控制台:
gitlab-rails console
手动执行发送测试邮件命令,检查是否能正常发送:
Notify.test_email('你的邮箱@qq.com', 'subject', 'content from gitlab').deliver_now
3.2 简单优化gitlab
用户注册登录相关:
在gitlab登录页面上,默认可以随意注册用户,如果你的gitlab打算放到公网上,一般不使用这种方式,可以关闭相关选项。然后使用邮件推送注册,以及强制用户第一次登录修改密码,这种方式需要管理员添加一个用户,写上用户的邮箱,系统会自动发送邮件到邮箱进行注册以及修改密码。
ssl配置:
方式一:让gitlab自己去let's encrypt自动申请,并可以设置自动续期
参考:https://docs.gitlab.com/omnibus/settings/ssl.html#let-39-s-encrypt-integration
方式二:手动指定证书
参考:https://docs.gitlab.com/omnibus/settings/nginx.html#manually-configuring-https
得到证书后:
mkdir -p /var/docker-date/gitlab-server/config/ssl
复制你的证书到指定目录:
cp /etc/letsencrypt/archive/xxx.com/* /var/docker-date/gitlab-server/config/ssl
编辑配置文件,修改如下内容:
vi /var/docker-date/gitlab-server/config/gitlab.rb
external_url 'https://gitlab.xxx.com'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain1.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey1.pem"
对于第二种方式,由于Let’s Encrypt证书需定时续签,你还需要自行考虑证书如何同步更新的问题。
4. 维护gitlab
gitlab备份:
docker exec -t <container name> gitlab-rake gitlab:backup:create
备份的文件在/var/docker-date/gitlab-server/data/backups/目录下。
备份恢复:
如果需要指定恢复某个特定备份,可以在后面加上BACKUP=时间戳
docker exec -it <name of container> gitlab-rake gitlab:backup:restore BACKUP=xxxx
gitlab版本升级:
参考:https://docs.gitlab.com/omnibus/docker/README.html#upgrade-gitlab-to-newer-version
网友评论