1. 项目概述GitLab作为一款开源的DevOps平台已经成为现代软件开发团队不可或缺的工具。它集成了代码托管、CI/CD、项目管理等功能于一体而Docker容器化部署方式则大幅简化了GitLab的安装和维护过程。本文将详细介绍如何使用Docker快速搭建企业级GitLab服务。2. 环境准备2.1 系统要求建议使用Linux服务器如Ubuntu 20.04或CentOS 7配置至少4核CPU、8GB内存和100GB存储空间。对于小型团队2核4GB的配置也可运行但性能会受限。2.2 Docker安装在Ubuntu系统上安装Docker的完整命令如下# 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 设置稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 验证安装 sudo docker run hello-world注意生产环境建议安装特定版本的Docker而非最新版以避免兼容性问题。3. GitLab容器部署3.1 基础部署命令使用官方GitLab CE镜像的最简部署方式sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 22:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest3.2 关键参数解析--hostname必须设置为最终访问的域名端口映射80HTTP访问443HTTPS访问22SSH克隆建议修改为其他端口如2222以避免冲突数据卷config配置文件logs日志文件data应用数据3.3 生产环境优化配置建议创建docker-compose.yml文件进行管理version: 3 services: gitlab: image: gitlab/gitlab-ce:14.10.2 container_name: gitlab restart: always hostname: gitlab.yourdomain.com environment: GITLAB_OMNIBUS_CONFIG: | external_url https://gitlab.yourdomain.com gitlab_rails[gitlab_shell_ssh_port] 2222 nginx[listen_port] 80 nginx[listen_https] false ports: - 80:80 - 443:443 - 2222:22 volumes: - /srv/gitlab/config:/etc/gitlab - /srv/gitlab/logs:/var/log/gitlab - /srv/gitlab/data:/var/opt/gitlab shm_size: 256m4. 初始配置4.1 首次访问容器启动后需要等待2-5分钟初始化访问http://服务器IP首次登录使用root账户密码存放在容器内sudo docker exec -it gitlab grep Password: /etc/gitlab/initial_root_password4.2 重要配置项修改/etc/gitlab/gitlab.rb对应宿主机/srv/gitlab/config/gitlab.rb# 基础配置 external_url https://gitlab.example.com gitlab_rails[time_zone] Asia/Shanghai # 邮箱配置必须 gitlab_rails[smtp_enable] true gitlab_rails[smtp_address] smtp.example.com gitlab_rails[smtp_port] 465 gitlab_rails[smtp_user_name] gitlabexample.com gitlab_rails[smtp_password] password gitlab_rails[smtp_domain] example.com gitlab_rails[smtp_authentication] login gitlab_rails[smtp_enable_starttls_auto] true gitlab_rails[smtp_tls] true # 备份配置 gitlab_rails[backup_path] /var/opt/gitlab/backups gitlab_rails[backup_keep_time] 604800 # 保留7天 # 性能优化 puma[worker_processes] 2 # CPU核心数 sidekiq[concurrency] 5 # 根据内存调整应用配置变更sudo docker exec -it gitlab gitlab-ctl reconfigure sudo docker exec -it gitlab gitlab-ctl restart5. 日常维护5.1 备份恢复创建备份sudo docker exec -it gitlab gitlab-backup create恢复备份# 先停止相关服务 sudo docker exec -it gitlab gitlab-ctl stop puma sudo docker exec -it gitlab gitlab-ctl stop sidekiq # 执行恢复BACKUP备份文件名去掉_gitlab_backup.tar sudo docker exec -it gitlab gitlab-backup restore BACKUP1234567890 # 重启服务 sudo docker exec -it gitlab gitlab-ctl restart5.2 版本升级停止并删除当前容器备份数据拉取新版本镜像使用相同配置启动新容器建议使用以下升级脚本#!/bin/bash # 停止并删除旧容器 sudo docker stop gitlab sudo docker rm gitlab # 拉取最新镜像 sudo docker pull gitlab/gitlab-ce:latest # 启动新容器使用原有数据卷 sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 2222:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest6. 常见问题解决6.1 502错误可能原因及解决方案内存不足增加SWAP或升级服务器配置端口冲突检查80/443端口是否被占用服务未就绪等待初始化完成查看日志docker logs -f gitlab6.2 邮件发送失败测试邮件配置sudo docker exec -it gitlab gitlab-rails console Notify.test_email(testexample.com, Test, Test Body).deliver_now6.3 性能优化增加PUMA workerspuma[worker_processes] 4调整Sidekiq线程sidekiq[concurrency] 10启用缓存gitlab_rails[redis_cache_instance] redis://redis.example.com:63797. 安全加固建议定期更新容器镜像配置HTTPS使用Lets Encryptletsencrypt[enable] true letsencrypt[contact_emails] [adminexample.com]限制Docker API访问设置定期自动备份启用双因素认证通过以上步骤您已经成功部署了一个基于Docker的企业级GitLab服务。这种部署方式不仅简化了安装过程还便于后续的维护和升级。根据团队规模和使用场景可以进一步调整资源配置和功能设置。
阅读完成 · 觉得有帮助?