docker-gitlab本地化部署:离线环境安装与依赖管理

docker-gitlab本地化部署:离线环境安装与依赖管理

【免费下载链接】docker-gitlab Dockerized GitLab 【免费下载链接】docker-gitlab 项目地址: https://gitcode.com/gh_mirrors/do/docker-gitlab

企业内网或隔离环境中部署GitLab时,常面临网络限制导致的依赖获取失败、配置复杂等问题。本文基于GitHub加速计划/docker-gitlab项目,提供完整的离线部署方案,包含环境准备、依赖管理、配置优化及常见问题解决,确保72小时内完成企业级GitLab环境搭建。

环境准备与资源清单

硬件要求

GitLab官方推荐最低配置为2核CPU、4GB内存、20GB磁盘空间。生产环境建议4核8GB配置,磁盘采用SSD以提升数据库性能。

软件依赖

组件版本要求作用
Docker20.10+容器运行时
Docker Compose2.0+容器编排工具
PostgreSQL16.x数据库服务
Redis7.x缓存服务

离线资源包准备

  1. 下载项目源码:git clone https://link.gitcode.com/i/cbe3226dbc9251b7d9de683e3e9e9848.git
  2. 获取基础镜像(联网环境提前拉取):
docker pull sameersbn/gitlab:18.5.1
docker pull redis:7
docker pull kkimurak/sameersbn-postgresql:16
  1. 导出镜像为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

离线升级策略

  1. 定期从官方仓库同步最新代码:git pull origin master
  2. 按步骤1-5准备新版本镜像和配置
  3. 执行备份后升级:
# 创建备份
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.ymlports映射)、权限不足(重新设置/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 【免费下载链接】docker-gitlab 项目地址: https://gitcode.com/gh_mirrors/do/docker-gitlab

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值