使用Docker搭建GitLab

161 阅读2分钟

本人使用的版本是15.10.0

1、搭建

docker  run --detach \
 --hostname xxx.com \  # 替换自己将来(web端,代码clone)想要被外界访问时使用的域名
 --publish 4438:443 \
 --publish 8880:80 \
 --publish 222:22 \
 --name gitlab \
 --restart always \   # 设置重启容器自启
 --privileged=true \  # 获取宿主机权限
 --volume /srv/gitlab/config:/etc/gitlab \
 --volume /srv/gitlab/logs:/var/log/gitlab \
 --volume /srv/gitlab/data:/var/opt/gitlab \
 gitlab/gitlab-ce:latest

2、配置

1、最主要的就是配置/etc/gitlab/gitlab.rb
2、因为上面的文件有很多注释,所以可以使用cat /etc/gitlab/gitlab.rb | grep -vE "#|^$"不看注释
3、另外使用vim或vi编辑时内容太多不容易找到位置可以按下面步骤
(注意:一般容器内都没有安装vi和vim,需要自行安装,安装步骤参考此处)

  • 先进入编辑(不需要输入i进入编辑模式)vi /etc/gitlab/gitlab.rb
  • 单击ESC,再按/键,随后输入查找的内容,如/gitlab_rails,输入完后按回车键查找,按N键查找下一个
 #外界访问时使用的域名,默认是http,这里设置为https,后面使用Nginx Proxy Manager 配置安全证书
 external_url 'https://xxx.com'  
 #配置邮箱服务
 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.qq.com"
 gitlab_rails['smtp_port'] = 465
 gitlab_rails['smtp_user_name'] = "xxx@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['smtp_pool'] = true
 #上下两个账户保持相同即可
 gitlab_rails['gitlab_email_from'] = 'xxx@qq.com' 
 #备份文件过期时间单位秒,这里换算后是7天,默认就是这个数值 
 gitlab_rails['backup_keep_time'] = 604800   
 #用于设置默认的 Git 用户名和电子邮件地址。
 user['git_user_name'] = "xxx"
 user['git_user_email'] = "xxx@qq.com"
 #用于启用或禁用GitLab自带的 Let's Encrypt 证书的自动续订功能。因为我们自己使用NPM所以不需要GitLab自带的
 letsencrypt['enable'] = false

3、配置数据备份(恢复数据时需要GitLab版本保持一致)

可以参考下面这个博主的文章
gitlab 本地 定时备份
为了安全起见将备份文件异地存储
gitlab 远程 定时备份
其中遇到一个问题下面cron命令中 -D 1不知道是什么作用(希望有懂的可以指教,按照上面这两篇文章弄下来实测是可以实现效果的,即从本地Docker部署的GitLab中首先实现本地备份,然后将备份文件上传到指定的远程服务器)

10 12 * * * /root/auto_backup_to_remote.sh -D 1

遇到的问题

1、GitLab Runner 触发速度不够快 2、新建几个项目后无法运行流水线