docker实战--使用docker安装gitlab

在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'] = "[email protected]"
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'] = '[email protected]'

这里使用阿里云的“邮件推送”产品里面的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打算放到公网上,一般不使用这种方式,可以关闭相关选项。然后使用邮件推送注册,以及强制用户第一次登录修改密码,这种方式需要管理员添加一个用户,写上用户的邮箱,系统会自动发送邮件到邮箱进行注册以及修改密码。

参考:Gitlab实战3: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 gitlab-rake gitlab:backup:create

备份的文件在/var/docker-date/gitlab-server/data/backups/目录下。

备份恢复:

如果需要指定恢复某个特定备份,可以在后面加上BACKUP=时间戳

docker exec -it gitlab-rake gitlab:backup:restore BACKUP=xxxx

参考:https://docs.gitlab.com/ce/raketasks/backup_restore.html#restore-for-docker-image-and-gitlab-omnibus-helm-chart

gitlab版本升级:

参考:https://docs.gitlab.com/omnibus/docker/README.html#upgrade-gitlab-to-newer-version

你可能感兴趣的:(docker实战--使用docker安装gitlab)