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
# 1.安装yum工具及设置docker-ce镜像库
sudo yum install -y yum-utils

# 国外的镜像下载太慢了改成阿里云镜像库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 2.阿里云镜像库
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 3.查询docker可用稳定版本
yum list docker-ce --showduplicates | sort -r

[root@VM-0-17-centos ~]# yum list docker-ce --showduplicates | sort -r
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



# 4.安装指定版本<24.0.6>版本
yum install docker-ce-24.0.6 -y

# 5.添加开机启动docker服务及运行启动docker服务
systemctl enable docker
systemctl start docker

2.配置国内docker源,使其下载镜像更快

1
2
3
4
5
6
7
8
9
[root@localhost ]# cat /etc/docker/daemon.json 
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}


# 上述为文件内容添加以后重载docker配置及重启docker服务
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备份方式

  • 1.启动容器时增加参数, 容器内时区为UTC,每天凌晨1点定时备份,即每天9点备份一次

    1
    2
    --env 'GITLAB_BACKUP_SCHEDULE=daily' \
    --env 'GITLAB_BACKUP_TIME=01:00' \
  • 2.进入容器备份

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 进入容器
    docker exec -it gitlab bash

    # 切换用户为git,使用git命令进行备份
    su git

    cd /home/git/gitlab/bin

    ./rake gitlab:backup:create

  • 3.容器外执行备份,备份时间为当前时间,可写shell定时备份

    1
    docker exec -it --user git gitlab ./bin/rake gitlab:backup:create 

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