Docker Compose编排极狐GitLab:一键部署与配置实战 1. 为什么选择Docker Compose部署极狐GitLab如果你正在寻找一种快速、可重复且易于维护的GitLab部署方案Docker Compose绝对是你的不二之选。相比传统的命令行部署方式Docker Compose通过声明式的YAML文件定义服务能够实现一键启动、停止和升级极大简化了运维工作。在实际项目中我遇到过不少团队还在手动敲Docker命令部署GitLab每次环境变更都要重新输入一长串参数不仅容易出错后期维护更是噩梦。而改用Docker Compose后所有配置都固化在文件中新成员加入时只需docker-compose up -d就能获得完全一致的环境。极狐GitLab作为GitLab的中国发行版特别适合国内团队使用。它提供了中文界面、本地化服务支持并且所有数据都存储在境内完全符合数据合规要求。通过Docker Compose部署你可以在20分钟内就搭建好一个功能完整的企业级代码托管平台。2. 环境准备与目录规划在开始之前我们需要确保基础环境就绪。首先确认已安装Docker Engine版本20.10.0和Docker Compose插件。可以通过以下命令检查docker --version docker compose version建议为GitLab分配至少4核CPU、8GB内存和50GB存储空间。我曾在资源不足的机器上部署结果容器频繁崩溃特别是当CI/CD流水线运行时内存直接爆满。接下来规划存储目录结构。与直接使用Docker不同Compose部署需要预先考虑数据持久化的位置/gitlab ├── docker-compose.yml # Compose配置文件 ├── data # 应用数据 ├── config # 配置文件 └── logs # 日志文件使用以下命令创建目录并设置权限sudo mkdir -p /gitlab/{data,config,logs} sudo chmod -R 775 /gitlab特别提醒如果使用SELinux需要添加:Z后缀来重新标记卷权限否则会出现权限错误。这是我曾经踩过的一个坑当时花了半天才找到原因。3. 编写docker-compose.yml文件现在进入核心环节——编写Compose配置文件。新建docker-compose.yml文件内容如下version: 3.8 services: gitlab: image: registry.gitlab.cn/omnibus/gitlab-jh:16.5.3-jh.0 container_name: gitlab hostname: gitlab.yourdomain.com restart: always environment: GITLAB_OMNIBUS_CONFIG: | external_url https://gitlab.yourdomain.com gitlab_rails[time_zone] Asia/Shanghai gitlab_rails[gitlab_email_from] gitlabyourdomain.com ports: - 80:80 - 443:443 - 2222:22 # 避免与宿主机SSH端口冲突 volumes: - ./config:/etc/gitlab - ./logs:/var/log/gitlab - ./data:/var/opt/gitlab shm_size: 256m networks: - gitlab-net networks: gitlab-net: driver: bridge这个配置有几个关键点需要注意使用国内镜像源registry.gitlab.cn加速下载指定具体版本号16.5.3-jh.0而非latest避免意外升级通过GITLAB_OMNIBUS_CONFIG注入配置这是极狐GitLab特有的方式将SSH端口映射为2222避免与宿主机冲突如果你需要SMTP发信功能可以添加以下配置environment: GITLAB_OMNIBUS_CONFIG: | gitlab_rails[smtp_enable] true gitlab_rails[smtp_address] smtp.exmail.qq.com gitlab_rails[smtp_port] 465 gitlab_rails[smtp_user_name] youremail.com gitlab_rails[smtp_password] yourpassword gitlab_rails[smtp_domain] exmail.qq.com gitlab_rails[smtp_authentication] login gitlab_rails[smtp_enable_starttls_auto] true gitlab_rails[smtp_tls] true4. 启动服务与初始配置一切就绪后在docker-compose.yml所在目录执行docker compose up -d首次启动需要较长时间约5-10分钟因为极狐GitLab要进行数据库初始化和各种服务启动。可以通过以下命令查看实时日志docker compose logs -f当看到以下日志时说明启动完成gitlab Reconfigured! gitlab GitLab configured and started!现在访问你配置的域名如https://gitlab.yourdomain.com首次登录需要修改root密码。密码文件位于cat ./config/initial_root_password安全提示该文件24小时后会自动删除建议立即修改密码并开启双重认证。5. 日常维护与问题排查使用Docker Compose管理服务非常便捷启停服务docker compose stop # 停止 docker compose start # 启动备份恢复# 备份 docker compose exec gitlab gitlab-backup create # 恢复需要先停止服务 docker compose exec gitlab gitlab-backup restore BACKUPxxx版本升级 修改docker-compose.yml中的镜像版本号然后执行docker compose pull docker compose up -d常见问题解决方案502错误通常是内存不足导致增加swap空间或升级配置启动超时检查./logs/reconfigure.log查看具体卡在哪一步邮件发送失败验证SMTP配置后执行docker compose exec gitlab gitlab-ctl reconfigure6. 性能优化与安全加固经过几个生产环境的实践我总结出以下优化建议性能调优environment: GITLAB_OMNIBUS_CONFIG: | puma[worker_processes] 4 sidekiq[max_concurrency] 10 postgresql[shared_buffers] 256MB安全加固定期更新镜像版本配置防火墙规则仅开放必要端口启用HTTPS并配置HSTS设置项目镜像清理策略对于企业级使用建议添加Prometheus监控monitoring: image: prom/prometheus ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml depends_on: - gitlab这种基于Docker Compose的部署方式不仅简化了极狐GitLab的安装流程更重要的是提供了可版本控制的标准化部署方案。当需要迁移或重建环境时你只需保留好docker-compose.yml和数据卷就能快速恢复服务。