August 27, 2018

Docker搭建gitlab及一些相关配置

安装

获取gitlab的docker镜像
docker pull gitlab/gitlab-ce:latest
启动
此处docker会占用原有ssh的22端口,建议将原来的ssh端口改为别的端口,不然需要每个客户端都要单独配置

sudo docker run --detach \
    --hostname gitlab.example.com \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

由于设置了映射配置文件都会保存到本机/srv/gitlab目录下,方便备份升级
升级的话讲原有镜像停止删除,然后重新拖取最新的镜像用上面的命令运行

配置

以配置邮件服务为例
安装好后第一次进入需要设置root密码,设置完之后可以进入修改用户名和密码

docker exec -it gitlab /bin/bash
vi /etc/gitlab/gitlab.rb

修改以下配置

 gitlab_rails['gitlab_email_enabled'] = true
 gitlab_rails['gitlab_email_from'] = '[email protected]'
 gitlab_rails['gitlab_email_display_name'] = 'git'
 gitlab_rails['gitlab_email_reply_to'] = '[email protected]'
 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com"
 gitlab_rails['smtp_port'] = 25
 gitlab_rails['smtp_user_name'] = "[email protected]"
 gitlab_rails['smtp_password'] = "password"
 gitlab_rails['smtp_domain'] = "xxx.com"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = true

更新配置
gitlab-ctl reconfigure
由于配置文件映射的本地,所以不用担心

备份

结合linux自带的crontab和gitlab自带的备份备份文件
所有操作均使用root运行

# 打开编辑crontab界面
crontab -e
# 添加一条(使用绝对路径),每天23:59备份,不输出
59 23 * * * /usr/bin/docker exec -t gitlab gitlab-rake gitlab:backup:create >> /dev/null 2>&1
# 重新加载配置
service cron reload
# 重启服务
service cron restart

备份后的文件保存在
/srv/gitlab/data/backups
注意恢复的时候只能同版本之间恢复
设置备份过期时间

gitlab_rails['backup_keep_time'] = 604800
# 更新配置
gitlab-ctl reconfigure

恢复

先将备份复制到backup目录下,修改权限777防止不能解压

gitlab-rake gitlab:backup:restore BACKUP=1502357536_2017_08_10_9.4.3