docker 部署 gitlab

GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

  1. 准备 docker 环境

  2. 以下部署脚本保存到 docker-compose.yml 文件中,该文件建议放在专用目录下。

version: '3.5'
services:

  gitlab-ce:
    image: gitlab/gitlab-ce:13.1.2-ce.0
    container_name: gitlab
    restart: unless-stopped
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://git.domain.com:88'
        nginx['listen_port'] = 80
    ports:
      - 88:80
    volumes:
      - ./config:/etc/gitlab
      - ./log:/var/log/gitlab
      - ./data:/var/opt/gitlab

考虑到部署在反向代理后面,添加了环境配置:
容器内使用 80 端口,映射出来任意端口后,通过反向代理转发出去。
同时让 external_url 使用访问反向代理时的地址,实现内外统一。

  1. 在专用目录中执行 docker-compose up -d

  2. 备份

docker exec -t gitlab gitlab-backup
  1. 恢复

备份的文件与恢复目标服务器版本必须一致

docker exec -t gitlab gitlab-ctl stop unicorn
docker exec -t gitlab gitlab-ctl stop sidekiq
chmod +r /home/docker/gitlab/data/backups/*_gitlab_backup.tar
# 恢复最新
docker exec -t gitlab gitlab-backup restore
# 指定文件
docker exec -t gitlab gitlab-backup restore BACKUP=1586587163_2020_04_11_11.11.3
docker exec -t gitlab update-permissions
docker restart gitlab

重启容器,注意看容器日志,如果提示有错误,让更新权限并重启,按提示执行命令。

  1. 升级

升级并不是总能成功,或兼容,所以升级前一定要备份数据,防止数据丢失!

官方升级指南

升级指南中,有关于特定版本的升级方法/前置条件,跳过会丢失数据!不过如果升级失败,可以先恢复数据,再重新选择小版本号升级,通常可以保证成功。

确认当前有没有数据更新操作:

# 要求 12.9 或更高版本
docker exec -t gitlab gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'

确保输出为 0,删掉现在老的gitlab容器,拉取新镜像,启动容器。
启动以后需要注意容器日志,可能会提示需要更新权限并重启,按提示操作。

  1. 其他命令
  • 更新配置
    docker exec -t gitlab gitlab-ctl reconfigure