docker-gitlab本地化部署:离线环境安装与依赖管理
【免费下载链接】docker-gitlab Dockerized GitLab 项目地址: https://gitcode.com/gh_mirrors/do/docker-gitlab
企业内网或隔离环境中部署GitLab时,常面临网络限制导致的依赖获取失败、配置复杂等问题。本文基于GitHub加速计划/docker-gitlab项目,提供完整的离线部署方案,包含环境准备、依赖管理、配置优化及常见问题解决,确保72小时内完成企业级GitLab环境搭建。
环境准备与资源清单
硬件要求
GitLab官方推荐最低配置为2核CPU、4GB内存、20GB磁盘空间。生产环境建议4核8GB配置,磁盘采用SSD以提升数据库性能。
软件依赖
| 组件 | 版本要求 | 作用 |
|---|---|---|
| Docker | 20.10+ | 容器运行时 |
| Docker Compose | 2.0+ | 容器编排工具 |
| PostgreSQL | 16.x | 数据库服务 |
| Redis | 7.x | 缓存服务 |
离线资源包准备
- 下载项目源码:
git clone https://link.gitcode.com/i/cbe3226dbc9251b7d9de683e3e9e9848.git - 获取基础镜像(联网环境提前拉取):
docker pull sameersbn/gitlab:18.5.1
docker pull redis:7
docker pull kkimurak/sameersbn-postgresql:16
- 导出镜像为tar包:
docker save -o gitlab-18.5.1.tar sameersbn/gitlab:18.5.1
docker save -o redis-7.tar redis:7
docker save -o postgres-16.tar kkimurak/sameersbn-postgresql:16
离线安装步骤
1. 传输资源至目标服务器
将项目源码、镜像tar包通过U盘或内网传输工具复制到离线服务器,建议存放于/srv/docker/gitlab目录。
2. 加载Docker镜像
cd /srv/docker/gitlab
docker load -i gitlab-18.5.1.tar
docker load -i redis-7.tar
docker load -i postgres-16.tar
3. 配置数据持久化
创建本地存储目录并设置权限:
mkdir -p /srv/docker/gitlab/{gitlab,postgresql,redis}
chmod -R 755 /srv/docker/gitlab
4. 生成加密密钥
使用pwgen工具生成64位随机密钥(如无该工具可手动创建):
# 安装pwgen(离线环境需提前下载rpm/deb包)
yum install -y pwgen || apt install -y pwgen
# 生成密钥并保存
echo "GITLAB_SECRETS_DB_KEY_BASE=$(pwgen -Bsv1 64)" > .env
echo "GITLAB_SECRETS_SECRET_KEY_BASE=$(pwgen -Bsv1 64)" >> .env
echo "GITLAB_SECRETS_OTP_KEY_BASE=$(pwgen -Bsv1 64)" >> .env
5. 修改Docker Compose配置
编辑docker-compose.yml,调整以下参数:
version: '2'
services:
gitlab:
image: sameersbn/gitlab:18.5.1
environment:
- DB_HOST=postgresql
- DB_NAME=gitlabhq_production
- DB_USER=gitlab
- DB_PASS=password
- REDIS_HOST=redis
- GITLAB_PORT=80
- GITLAB_SSH_PORT=22
- TZ=Asia/Shanghai
volumes:
- /srv/docker/gitlab/gitlab:/home/git/data
ports:
- "80:80"
- "22:22"
depends_on:
- postgresql
- redis
postgresql:
image: kkimurak/sameersbn-postgresql:16
environment:
- DB_NAME=gitlabhq_production
- DB_USER=gitlab
- DB_PASS=password
volumes:
- /srv/docker/gitlab/postgresql:/var/lib/postgresql
redis:
image: redis:7
volumes:
- /srv/docker/gitlab/redis:/data
6. 启动服务
docker-compose up -d
首次启动需等待5-10分钟初始化数据库,可通过docker-compose logs -f gitlab查看进度。
依赖管理优化
内部CA证书配置
如企业内网使用自签名证书,需将CA证书添加至GitLab信任链:
# 将ca.crt复制到GitLab数据目录
cp /path/to/ca.crt /srv/docker/gitlab/gitlab/certs/
chmod 400 /srv/docker/gitlab/gitlab/certs/ca.crt
# 修改GitLab配置启用SSL
sed -i 's/GITLAB_HTTPS=false/GITLAB_HTTPS=true/' docker-compose.yml
sed -i 's/SSL_SELF_SIGNED=false/SSL_SELF_SIGNED=true/' docker-compose.yml
docker-compose up -d --force-recreate
离线升级策略
- 定期从官方仓库同步最新代码:
git pull origin master - 按步骤1-5准备新版本镜像和配置
- 执行备份后升级:
# 创建备份
docker-compose exec gitlab app:rake gitlab:backup:create
# 停止旧版本
docker-compose down
# 启动新版本
docker-compose up -d
常见问题解决
1. 服务启动失败
检查日志定位问题:
docker-compose logs gitlab | grep ERROR
常见原因:端口冲突(修改docker-compose.yml中ports映射)、权限不足(重新设置/srv/docker/gitlab目录权限)。
2. SSH端口占用
若服务器22端口已被系统SSH服务占用,需修改GitLab SSH端口映射:
# docker-compose.yml
services:
gitlab:
ports:
- "10022:22" # 将容器22端口映射到主机10022端口
详细配置参考暴露SSH端口文档。
3. 数据库连接超时
确认PostgreSQL容器状态及网络连通性:
# 检查容器状态
docker-compose ps postgresql
# 测试连接
docker-compose exec postgresql psql -U gitlab -d gitlabhq_production
4. 容器仓库配置
如需启用内置容器仓库,参考容器仓库文档配置Nginx反向代理和存储驱动。
维护与监控
备份策略
配置每日自动备份:
# 添加至crontab
echo "0 2 * * * cd /srv/docker/gitlab && docker-compose exec -T gitlab app:rake gitlab:backup:create" >> /etc/crontab
健康检查
使用内置健康检查接口:
curl -f http://localhost/-/health || echo "GitLab服务异常"
总结
通过本文方案,可在完全离线环境中部署功能完整的GitLab服务,满足企业代码管理需求。关键步骤包括资源准备、密钥管理、持久化配置及证书处理。定期执行备份和监控,可确保服务稳定运行。更多高级配置如LDAP集成、CI/CD流水线等,可参考项目官方文档进行扩展。
【免费下载链接】docker-gitlab Dockerized GitLab 项目地址: https://gitcode.com/gh_mirrors/do/docker-gitlab
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



