GitLab Linux Docker部署
部署:
1、docker pull registry.gitlab.cn/omnibus/gitlab-jh:17.11.7
2、export GITLAB_HOME=/...
3、docker run -itd --publish 14901:80 --publish 14902:443 --publish 14903:22 --name gitlab-container --restart always -v $GITLAB_HOME/config:/etc/gitlab -v $GITLAB_HOME/logs:/var/log/gitlab -v $GITLAB_HOME/data:/var/opt/gitlab --shm-size 1024m --log-driver=journald registry.gitlab.cn/omnibus/gitlab-jh:17.11.7
4、修改容器内/etc/gitlab/gitlab.rb
external_url 'http://{ip}:14901'
gitlab_rails['gitlab_ssh_host'] = '{ip}'
上述如果绑定了域名xxx.com,则
external_url 'http://gitlab.xxx.com:14901'
gitlab_rails['gitlab_ssh_host'] = 'gitlab.xxx.com'
gitlab_rails['gitlab_shell_ssh_port'] = 14903
gitlab_rails['time_zone'] = 'Asia/Shanghai'
nginx['listen_port'] = 80
nginx['listen_https'] = false
上述两条命令需要添加原因:external_url为http协议时默认80端口;为https时默认为443端口。但是如果包含端口号,则会优先以解析到的端口号为默认端口,上述命令包含14901端口,则80会被替换为14901。因为容器的端口映射为映射到容器内的80端口,所以仍然需要添加nginx['listen_port'] = 80以改变默认的14901端口配置。
5、运行gitlab-ctl reconfigure
6、修改容器内/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml配置文件中
gitlab:
port: 14901
执行gitlab-ctl restart
7、第一次获取root密码(用户名:root):grep 'Password:' /etc/gitlab/initial_root_password 或者 cat /etc/gitlab/initial_root_password
内存占用过高:
修改容器内/etc/gitlab/gitlab.rb的配置(不仅限以下配置,可以视情况修改更多配置)
unicorn['worker_processes'] = 2
sidekiq['concurrency'] = 4
postgresql['shared_buffers'] = "64MB"
postgresql['max_worker_processes'] = 2
备份与迁移:
1、进入容器,执行gitlab-rake gitlab:backup:create,备份文件会在/var/opt/gitlab/backups下,备份该文件,比如文件名为xxx_2025_11_10_17.11.7_gitlab_backup.tar
2、备份/etc/gitlab/gitlab-secrets.json和/etc/gitlab/gitlab.rb
3、在启动完成新的容器(并且备份文件、secrets.json已经复制到相应目录下,gitlab.rb已经完成相应修改)后,执行
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl status
chown -R 777 /var/opt/gitlab/backups 或者改权限为git:git
gitlab-rake gitlab:backup:restore BACKUP=xxx_2025_11_10_17.11.7
gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true
注意:新的GitLab版本号需要和老版本一致,gitlab升级单独进行!
邮件配置:
修改容器内/etc/gitlab/gitlab.rb的配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465 # 通常对于SMTPS使用465端口,对于STARTTLS使用587端
gitlab_rails['smtp_user_name'] = "your_email@qq.com" # 你的邮箱地址
gitlab_rails['smtp_password'] = "your_smtp_authorization_code" # 你的SMTP授权码
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true # 如果使用STARTTLS,则设置为true
gitlab_rails['smtp_tls'] = true # 如果使用SMTPS(端口465),则设置为true
gitlab_rails['gitlab_email_from'] = 'your_email@qq.com' # 发件人邮箱地址
gitlab_rails['gitlab_email_display_name'] = 'GitLab CE' # 发件人显示名称
gitlab_rails['signup_enabled'] = true(未找到此配置)
gitlab-ctl restart或者重启容器
注意:根据邮箱服务提供商和具体需求,上述参数可能需要进行相应的调整。

浙公网安备 33010602011771号