GitLab docker compose 部署迁移【本地映射版】

目录
第一次随便用用,然后就需要迁移了( ╯□╰ )
GitLab docker compose 部署迁移【本地映射版】
首先我们进行 GitLab docker compose 部署,以下是docker compose(vlumes为随机生成)
services:
gitlab:
image: gitlab/gitlab-ee:18.9.7-ee.0
container_name: gitlab
restart: always
hostname: 'https://gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
# Add any other gitlab.rb configuration here, each on its own line
external_url 'https://gitlab.example.com'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- 'cf24c157d0cac6f68e7a4b13920760fe953b4e0f17723625eb76f83a3ca10e1d:/etc/gitlab'
- '8a130bf14966991beddf5716e605f2832c32ed543fb7a7310f0252b5bc495b36:/var/log/gitlab'
- '7a77a9481799976e97d4ad246fa70c19705f1fa5e864e4e29436abd8f3440702:/var/opt/gitlab'在日常使用的时候,我们第一次部署可能会遇到,也有可能一开始使用了 docker run 进行容器使用,然后发现需要进行修改,进行卷迁移的情况
- 需要迁移机器
- 需要更改本地映射的位置
- 需要备份之类的情况
查看挂载信息
docker inspect gitlab --format='{{json .Mounts}}' | python3 -m json.tool[
{
"Type": "volume",
"Name": "cf24c157d0cac6f68e7a4b13920760fe953b4e0f17723625eb76f83a3ca10e1d",
"Source": "/var/lib/docker/volumes/cf24c157d0cac6f68e7a4b13920760fe953b4e0f17723625eb76f83a3ca10e1d/_data",
"Destination": "/etc/gitlab",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "8a130bf14966991beddf5716e605f2832c32ed543fb7a7310f0252b5bc495b36",
"Source": "/var/lib/docker/volumes/8a130bf14966991beddf5716e605f2832c32ed543fb7a7310f0252b5bc495b36/_data",
"Destination": "/var/log/gitlab",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "7a77a9481799976e97d4ad246fa70c19705f1fa5e864e4e29436abd8f3440702",
"Source": "/var/lib/docker/volumes/7a77a9481799976e97d4ad246fa70c19705f1fa5e864e4e29436abd8f3440702/_data",
"Destination": "/var/opt/gitlab",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
}
]停止容器
docker compose stop
# or
#docker-compose stop
# or
#docker stop gitlab那么这个是一个本地映射的迁移方式
我们找到 volumes 的目录,也就是以上 .github 的位置,然后 mv 或者 cp 到需要迁移的位置,也可以使用 rsync ,达到目的即可
# 配置数据
sudo rsync -avP /var/lib/docker/volumes/cf24c157d0cac6f68e7a4b13920760fe953b4e0f17723625eb76f83a3ca10e1d/_data/ ./gitlab_config/
# 日志数据
sudo rsync -avP /var/lib/docker/volumes/8a130bf14966991beddf5716e605f2832c32ed543fb7a7310f0252b5bc495b36/_data/ ./gitlab_logs/
# 主数据(仓库、DB等)
sudo rsync -avP /var/lib/docker/volumes/7a77a9481799976e97d4ad246fa70c19705f1fa5e864e4e29436abd8f3440702/_data/ ./gitlab_data/然后更改 volumes 这一块配置
volumes:
- 'cf24c157d0cac6f68e7a4b13920760fe953b4e0f17723625eb76f83a3ca10e1d:/etc/gitlab'
- '8a130bf14966991beddf5716e605f2832c32ed543fb7a7310f0252b5bc495b36:/var/log/gitlab'
- '7a77a9481799976e97d4ad246fa70c19705f1fa5e864e4e29436abd8f3440702:/var/opt/gitlab'把冒号前面的 .gitlab 改为目的位置,比如
volumes:
- './gitlabs/config:/etc/gitlab'
- './gitlabs/logs:/var/log/gitlab'
- './gitlabs/data:/var/opt/gitlab'更改后的docker compose 配置
services:
gitlab:
image: gitlab/gitlab-ee:18.9.7-ee.0
container_name: gitlab
restart: always
hostname: 'https://gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
# Add any other gitlab.rb configuration here, each on its own line
external_url 'https://gitlab.example.com'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- './gitlabs/config:/etc/gitlab'
- './gitlabs/logs:/var/log/gitlab'
- './gitlabs/data:/var/opt/gitlab'启动容器
docker compose up -d完成迁移