目录

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 进行容器使用,然后发现需要进行修改,进行卷迁移的情况

  1. 需要迁移机器
  2. 需要更改本地映射的位置
  3. 需要备份之类的情况

查看挂载信息

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

完成迁移