简介:本文详细介绍如何使用Docker-Compose快速搭建私有化GitLab环境,涵盖环境准备、配置优化、数据持久化、高可用方案及运维建议,适合开发团队和企业用户参考。
GitLab作为开源的代码托管与DevOps平台,在企业私有化部署中需求日益增长。本文通过Docker-Compose实现GitLab的快速部署,重点解决配置复杂、数据持久化、性能调优等痛点,提供从基础环境搭建到高可用架构的完整方案,并附实际配置示例与运维建议。
docker-compose.yml文件定义服务依赖与配置,一键启动。
# Ubuntu示例sudo apt update && sudo apt install -y docker.io docker-composesudo systemctl enable --now docker# 验证安装docker --version # 应输出Docker版本docker-compose --version # 应输出Compose版本
version: '3.8'services:gitlab:image: gitlab/gitlab-ee:latest # 企业版,社区版用gitlab/gitlab-cecontainer_name: gitlabrestart: unless-stoppedenvironment:GITLAB_ROOT_PASSWORD: "your_strong_password" # 初始管理员密码GITLAB_OMNIBUS_CONFIG: |external_url 'http://your-domain.com' # 替换为实际域名postgresql['enable'] = falseredis['enable'] = falsegitlab_rails['db_username'] = "gitlab"gitlab_rails['db_password'] = "db_password"gitlab_rails['db_host'] = "postgres"gitlab_rails['redis_host'] = "redis"ports:- "80:80"- "443:443"- "2222:22" # SSH端口(避免与主机22冲突)volumes:- gitlab-config:/etc/gitlab- gitlab-logs:/var/log/gitlab- gitlab-data:/var/opt/gitlabdepends_on:- postgres- redispostgres:image: postgres:13container_name: postgresrestart: unless-stoppedenvironment:POSTGRES_USER: "gitlab"POSTGRES_PASSWORD: "db_password"POSTGRES_DB: "gitlabhq_production"volumes:- postgres-data:/var/lib/postgresql/dataredis:image: redis:6-alpinecontainer_name: redisrestart: unless-stoppedcommand: ["redis-server", "--appendonly", "yes"]volumes:- redis-data:/datavolumes:gitlab-config:gitlab-logs:gitlab-data:postgres-data:redis-data:
# 启动服务(首次运行会自动拉取镜像)docker-compose up -d# 检查服务状态docker-compose ps# 查看日志(排查启动问题)docker-compose logs -f gitlab
访问http://your-domain.com,使用用户名root和配置的密码登录。
external_url:
external_url 'https://gitlab.example.com'
GITLAB_OMNIBUS_CONFIG: |letsencrypt['enable'] = trueletsencrypt['contact_emails'] = ['admin@example.com']
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /etc/gitlab/ssl/gitlab.example.com.key \-out /etc/gitlab/ssl/gitlab.example.com.crt
volumes:- ./ssl:/etc/gitlab/ssl
environment:GITLAB_OMNIBUS_CONFIG: |unicorn['worker_processes'] = 2 # 根据CPU核心数调整postgresql['shared_buffers'] = "256MB" # 分配总内存的25%
手动备份命令:
GITLAB_OMNIBUS_CONFIG: |gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"gitlab_rails['backup_keep_time'] = 604800 # 保留7天
docker-compose exec gitlab bash -c "gitlab-rake gitlabcreate"
gitlab_rails['db_host']指向主库。将附件、LFS文件存储至S3兼容对象存储:
GITLAB_OMNIBUS_CONFIG: |gitlab_rails['storage_path'] = "/var/opt/gitlab/gitlab-rails/uploads"gitlab_rails['object_store']['enabled'] = truegitlab_rails['object_store']['connection'] = {'provider' => 'AWS','region' => 'us-east-1','aws_access_key_id' => 'ACCESS_KEY','aws_secret_access_key' => 'SECRET_KEY','host' => 's3.example.com' # 自定义端点}
docker-compose scale启动多个Runner容器处理CI/CD任务。docker-compose logs gitlab)。gitlab_rails['gitlab_shell_ssh_port']与容器端口映射一致。
docker-compose exec gitlab gitlab-rake gitlabcreate
docker-compose.yml中的镜像版本(如gitlab/gitlab-ee:15.10.0)。
docker-compose down && docker-compose up -d
通过Docker-Compose私有化部署GitLab,可显著降低运维复杂度,同时保持灵活性。实际部署中需根据团队规模调整资源配置,并建立完善的备份与恢复机制。