GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
- 准备 docker 环境
-
以下部署脚本保存到
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 使用访问反向代理时的地址,实现内外统一。
- 在专用目录中执行
docker-compose up -d
-
备份
docker exec -t gitlab gitlab-backup
- 恢复
备份的文件与恢复目标服务器版本必须一致
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
重启容器,注意看容器日志,如果提示有错误,让更新权限并重启,按提示执行命令。
- 升级
升级并不是总能成功,或兼容,所以升级前一定要备份数据,防止数据丢失!
官方升级指南
- https://docs.gitlab.com/omnibus/docker/README.html
- https://docs.gitlab.com/ee/policy/maintenance.html
- https://docs.gitlab.com/ee/update/README.html#version-specific-upgrading-instructions
升级指南中,有关于特定版本的升级方法/前置条件,跳过会丢失数据!不过如果升级失败,可以先恢复数据,再重新选择小版本号升级,通常可以保证成功。
确认当前有没有数据更新操作:
# 要求 12.9 或更高版本
docker exec -t gitlab gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'
确保输出为 0
,删掉现在老的gitlab容器,拉取新镜像,启动容器。
启动以后需要注意容器日志,可能会提示需要更新权限并重启,按提示操作。
- 其他命令
- 更新配置
docker exec -t gitlab gitlab-ctl reconfigure