GitLabHQ项目Docker容器化部署指南
前言
GitLab作为一款开源的DevOps平台,提供了从项目管理到持续集成的一站式解决方案。本文将详细介绍如何在Docker环境中部署GitLabHQ项目,帮助开发者快速搭建自己的GitLab服务。
部署前准备
系统要求
- Docker环境:需要安装Docker Engine(版本17.06或更高),但不支持Docker for Windows
- 邮件服务器:需准备Postfix或Sendmail等MTA服务
- 主机名:必须配置有效的外部可访问主机名,不能使用localhost
注意事项
- 不建议在Kubernetes中直接部署GitLab Docker镜像,这会导致单点故障
- 对于生产环境,建议使用专门的GitLab Helm Chart或Operator进行部署
SSH端口配置
GitLab默认使用22端口进行SSH交互,如需修改端口:
- 编辑
/etc/ssh/sshd_config
文件 - 修改
Port
值为新端口号(如2424) - 重启SSH服务:
sudo systemctl restart ssh
修改后,SSH克隆URL将变为:ssh://git@gitlab.example.com:<portNumber>/user/project.git
数据卷准备
创建数据目录
建议在/srv/gitlab
目录下存储GitLab数据:
sudo mkdir -p /srv/gitlab
设置环境变量:
export GITLAB_HOME=/srv/gitlab
数据卷结构
| 宿主机位置 | 容器位置 | 用途 | |------------------|-------------------|--------------------| | $GITLAB_HOME/data | /var/opt/gitlab | 存储应用数据 | | $GITLAB_HOME/logs | /var/log/gitlab | 存储日志 | | $GITLAB_HOME/config | /etc/gitlab | 存储配置文件 |
重要提示:Gitaly数据卷不建议使用NFS文件系统,可能引发性能问题。
版本选择
生产环境应固定使用特定版本,格式为:gitlab/gitlab-ee:<version>-ee.0
- 企业版:
gitlab/gitlab-ee
- 社区版:
gitlab/gitlab-ce
测试环境可使用latest
标签获取最新稳定版。
部署方式
使用Docker Compose(推荐)
- 创建
docker-compose.yml
文件:
services:
gitlab:
image: gitlab/gitlab-ee:<version>-ee.0
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '256m'
- 启动服务:
docker compose up -d
使用Docker Engine
sudo docker run --detach \
--hostname gitlab.example.com \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee:<version>-ee.0
使用Docker Swarm模式
- 创建
docker-compose.yml
:
services:
gitlab:
image: gitlab/gitlab-ee:<version>-ee.0
# ...其他配置...
configs:
- source: gitlab
target: /omnibus_config.rb
secrets:
- gitlab_root_password
gitlab-runner:
image: gitlab/gitlab-runner:alpine
deploy:
mode: replicated
replicas: 4
configs:
gitlab:
file: ./gitlab.rb
secrets:
gitlab_root_password:
file: ./root_password.txt
- 创建配置文件
gitlab.rb
和密码文件root_password.txt
- 部署服务:
docker stack deploy --compose-file docker-compose.yml mystack
初始访问
容器启动后,访问配置的URL,使用以下凭据登录:
- 用户名:root
- 密码:通过命令获取:
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
注意:初始密码文件将在容器首次重启24小时后自动删除。
后续配置
部署完成后,建议进行以下配置:
- 配置SMTP邮件服务
- 设置备份策略
- 配置HTTPS证书
- 调整性能参数
通过以上步骤,您已成功在Docker环境中部署了GitLab服务。根据实际需求,可以进一步优化和扩展您的GitLab实例。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考