docker部署gitlab 12.10.6过程
1.docker安装
docker指定版本安装【官方文档步骤】
官方文档地址:https://docs.docker.com/engine/install/centos/
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 27 28 29 30 31 32 33 34 35 36 37
| sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
[root@VM-0-17-centos ~] Repository epel is listed more than once in the configuration Loading mirror speeds from cached hostfile Loaded plugins: fastestmirror, langpacks Installed Packages docker-ce.x86_64 3:24.0.6-1.el7 docker-ce-stable docker-ce.x86_64 3:24.0.6-1.el7 @docker-ce-stable docker-ce.x86_64 3:24.0.5-1.el7 docker-ce-stable docker-ce.x86_64 3:24.0.4-1.el7 docker-ce-stable docker-ce.x86_64 3:24.0.3-1.el7 docker-ce-stable docker-ce.x86_64 3:24.0.2-1.el7 docker-ce-stable docker-ce.x86_64 3:24.0.1-1.el7 docker-ce-stable docker-ce.x86_64 3:24.0.0-1.el7 docker-ce-stable docker-ce.x86_64 3:23.0.6-1.el7 docker-ce-stable docker-ce.x86_64 3:23.0.5-1.el7 docker-ce-stable docker-ce.x86_64 3:23.0.4-1.el7 docker-ce-stable
yum install docker-ce-24.0.6 -y
systemctl enable docker systemctl start docker
|
2.配置国内docker源,使其下载镜像更快
1 2 3 4 5 6 7 8 9
| [root@localhost ] { "registry-mirrors": ["https://mirror.ccs.tencentyun.com"] }
systemctl daemon-reload systemctl restart docker
|
3.根据github步骤分别启动redis、postgresql、gitlab容器
地址:https://github.com/sameersbn/docker-gitlab/tree/12.10.6#quick-start
1 2 3
| docker run --name gitlab-redis -d \ --volume /data/gitlab/redis:/var/lib/redis \ sameersbn/redis:4.0.9-2
|
1 2 3 4 5 6
| docker run --name gitlab-postgresql -d \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=xxxxxx@2023' \ --env 'DB_EXTENSION=pg_trgm' \ --volume /data/gitlab/postgresql:/var/lib/postgresql \ sameersbn/postgresql:10-2
|
在启动gitlab容器之前,需要先准备几个参数的值
#gitlab的域名
GITLAB_HOST: gitlab.xxx.com
#gitlab容器内的时区,rails中时区不使用shanghai,用beijing
GITLAB_TIMEZONE:Beijing
#gitlab容器内的仓库http地址端口
GITLAB_PORT:80
#gitlab容器内的仓库ssh地址端口
GITLAB_SSH_PORT:10022
#base64编码的随机字符串,以下参数可在在线base64网站中生成
GITLAB_SECRETS_DB_KEY_BASE
GITLAB_SECRETS_SECRET_KEY_BASE
GITLAB_SECRETS_OTP_KEY_BASE
以上参数准备好以后即可运行gitlab容器,运行后等待几分钟即可进入首页
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| docker run --name gitlab -d \ --link gitlab-postgresql:postgresql --link gitlab-redis:redisio \ --env GITLAB_HOST=gitlab.xxxx.com \ --env GITLAB_TIMEZONE=Beijing \ --publish 10022:22 --publish 10080:80 \ --env 'GITLAB_PORT=80' --env 'GITLAB_SSH_PORT=10022' \ --env 'GITLAB_BACKUP_SCHEDULE=daily' \ --env 'GITLAB_BACKUP_TIME=01:00' \ --env 'GITLAB_SECRETS_DB_KEY_BASE=eW91eWlnYW1lQDIwMjM' \ --env 'GITLAB_SECRETS_SECRET_KEY_BASE=eW91eWlnYW1lQDIwMjM' \ --env 'GITLAB_SECRETS_OTP_KEY_BASE=eW91eWlnYW1lQDIwMjM' \ --volume /data/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:12.10.6
|
5.gitlab备份方式
4.nginx站点反向代理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| upstream gitlab { server 127.0.0.1:10080;
}
server { listen 80; server_name gitlab.xxxx.com;
location / { client_max_body_size 200m; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://gitlab; proxy_redirect off; } }
|
5.【版本升级注意事项】
【sameersbn/gitlab】与官方的docker部署相比较为简单,按照版本由低到高一步一步拉起容器,及时观察容器启动日志。容器内部会自动进行数据迁移,如遇到错误,根据错误解决即可,大多遇到的错误都是缺少参数,在容器启动时,将版本差异的参数补齐即可。
- ① 先将现有的gitlab仓库映射的文件夹备份迁移至新机器
- ② 建议先升到当前大版本的最高小版本再升到下个大版本的第一个小版本,版本可在sameersbn/gitlab 的tag中查找。
例如:12.10.6 —> 13.0.0 —> 13.12.4 —> 14.0.0 —> 14.1.1 -> 14.2.1 在往后升级版本会出现报错,暂未解决
- ③ 升级完毕后检查各项功能是否有问题,如【能否正常拉取提交代码,镜像仓库,webhook功能等】
客户端配置
由于在启动容器时配置gitlab的ssh端口不为22。所以要在本地.ssh/config中增加如下配置才能正常拉取ssh地址仓库代码。
1 2 3 4 5 6
| Host gitlab.xxx.com HostName gitlab.xxx.com User git Port 10022 IdentityFile ~/.ssh/id_rsa
|