# 前置条件
安装 docker, 配置国内镜像源
# 部署命令(使用了一个汉化的版本)
1
| docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab docker.io/twang2218/gitlab-ce-zh
|
把你服务器的端口映射到容器内部的 443 或者 80
1
| -v /home/gitlab/config:/etc/gitlab
|
这里把容器的配置文件夹映射到服务器真实目录 /home/gitlab/config
1
| -v /home/gitlab/logs:/var/log/gitlab
|
这里把容器的日志文件夹映射到服务器真实目录 /home/gitlab/logs
1
| -v /home/gitlab/data:/var/opt/gitlab
|
这里把容器的存储文件夹映射到服务器真实目录 /home/gitlab/data
# 进入容器配置 gitlab
1
| docker exec -it gitlab /bin/bash
|
1
| vim /etc/gitlab/gitlab.rb
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| external_url 'http://124.225.116.118:35236'
gitlab_rails['time_zone'] = 'UTC'
gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = '2513178346@qq.com' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "2513178346@qq.com" gitlab_rails['smtp_password'] = "你的" gitlab_rails['smtp_domain'] = "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['rack_attack_git_basic_auth'] = { 'enabled' => true, 'ip_whitelist' => ["127.0.0.1"], 'maxretry' => 100, 'findtime' => 60, 'bantime' => 3600 }
|
# 重启服务
1 2 3
| gitlab-ctl stop gitlab-ctl reconfigure gitlab-ctl start
|
# 一些常见问题
1. 同一个 ip 短时间并发可能会触发限流
解决办法
方法一、暂时解决,进入容器执行命令删除 IP 黑名单
1 2 3
| redis-cli -s /var/opt/gitlab/redis/redis.socket keys *attack* del "上一步查到的键值"
|
方法二、加 IP 白名单(如果有固定 ip 可以这么做)或增加并发阈值
1 2 3 4 5 6 7 8 9 10
| gitlab_rails['rack_attack_git_basic_auth'] = { 'enabled' => true, 'ip_whitelist' => ["127.0.0.1"], 'maxretry' => 100, 'findtime' => 60, 'bantime' => 3600 }
|