Linux环境下GitLab的容器化部署方案
导读:Linux环境下GitLab容器化部署方案 一 环境准备与资源建议 操作系统与软件:建议使用 Ubuntu 20.04+ 或 CentOS 7+,安装 Docker 20.10+ 与 Docker Compose 2.0+。 硬件基线:至...
Linux环境下GitLab容器化部署方案
一 环境准备与资源建议
- 操作系统与软件:建议使用 Ubuntu 20.04+ 或 CentOS 7+,安装 Docker 20.10+ 与 Docker Compose 2.0+。
- 硬件基线:至少 2 核 CPU、4 GB 内存、20 GB 磁盘空间(生产环境建议更高规格)。
- 网络与端口:开放或映射 80/443/22(HTTP/HTTPS/SSH),如使用云服务器需同步配置安全组规则。
- 时间同步:挂载宿主机时间或设置时区,避免证书与定时任务异常。
- 资源检查与安装示例:
- 检查环境:
docker --version & & docker-compose --version - 快速安装 Docker(示例):
curl -fsSL https://get.docker.com -o get-docker.sh & & sudo sh get-docker.sh & & sudo usermod -aG docker $USER - 以上准备可显著提升首次启动成功率与后续维护效率。
- 检查环境:
二 部署方式一 Docker Compose 推荐
- 目录与持久化:创建持久化目录并赋予合适权限(示例:
/data/gitlab/{ config,logs,data}),用于保存配置、日志与业务数据,避免容器重建导致数据丢失。 - 编排文件要点(示例):
- 版本与服务:使用 version: ‘3.6’,服务名 gitlab,镜像 gitlab/gitlab-ce:latest。
- 端口映射:为避免与宿主机 SSH 冲突,常用自定义端口,如 5480:80、5443:443、5022:22。
- 数据卷:挂载 /etc/gitlab:/etc/gitlab、/var/log/gitlab:/var/log/gitlab、/var/opt/gitlab:/var/opt/gitlab;可挂载 /etc/localtime:/etc/localtime:ro 同步时区。
- 资源与稳定性:设置 restart: always;建议设置 shm_size: ‘256m’ 提升稳定性。
- 启动与初始化:
- 启动:
docker-compose up -d - 查看日志:
docker-compose logs -f gitlab - 初始 root 密码:在容器内查看
/etc/gitlab/initial_root_password(默认 24 小时 有效),随后登录 Web 强制修改密码。
- 启动:
- 防火墙放行(firewalld 示例):
firewall-cmd --add-port={ 80,443,22} /tcp --permanent & & firewall-cmd --reload - 该方式便于多容器编排、统一配置与后续扩展。
三 部署方式二 Docker Run 单容器
- 基本命令模板(按需替换端口与目录):
docker run -d --name gitlab --hostname gitlab.example.com --restart always \-p 8443:443 -p 8080:80 -p 2222:22 \-v /path/to/config:/etc/gitlab -v /path/to/logs:/var/log/gitlab -v /path/to/data:/var/opt/gitlab \gitlab/gitlab-ce:latest
- 首次访问与初始化:浏览器访问 http://服务器IP:8080,设置 root 初始密码;如需使用域名与标准端口,请调整端口映射与后续配置。
- 适用场景:快速验证、轻量试用或受限环境下单实例部署。
四 关键配置与运维要点
- 外部访问地址:在容器内编辑 /etc/gitlab/gitlab.rb,设置
external_url 'http://your-domain-or-ip:port'(如启用 HTTPS 则使用 https),保存后执行gitlab-ctl reconfigure使配置生效。 - SSH 端口同步:若宿主机 SSH 非 22(如映射为 5022),需在
gitlab.rb中设置gitlab_rails['gitlab_shell_ssh_port'] = 5022,并同步更新仓库克隆地址中的 SSH 端口。 - 时区设置:在
gitlab.rb中设置gitlab_rails['time_zone'] = 'Asia/Shanghai',保持界面与任务时间一致。 - HTTPS 启用:
- 手动证书:将证书与私钥挂载至容器内(如 /etc/gitlab/ssl),并在
gitlab.rb中启用letsencrypt['enabled'] = true或配置nginx['ssl_certificate']/nginx['ssl_certificate_key'],随后gitlab-ctl reconfigure。 - 自签名证书:用于测试环境,注意客户端需信任自签名根证书。
- 手动证书:将证书与私钥挂载至容器内(如 /etc/gitlab/ssl),并在
- 邮件通知(SMTP):在
gitlab.rb中配置smtp_*系列参数(如smtp_enable、smtp_address、smtp_port、smtp_user_name、smtp_password、smtp_domain、smtp_starttls),完成后gitlab-ctl reconfigure并测试发送。 - 备份与恢复:
- 备份:
docker-compose exec gitlab gitlab-rake gitlab:backup:create(默认备份至 /var/opt/gitlab/backups,可在gitlab.rb中调整gitlab_rails['backup_path'])。 - 恢复:先停止相关服务(如
sidekiq、unicorn/puma),执行docker-compose exec gitlab gitlab-rake gitlab:backup:restore BACKUP=备份文件名前缀,再重启服务。
- 备份:
- 监控与日志:结合容器日志
docker-compose logs -f gitlab与 GitLab 内置监控、日志收集,关注 CPU/内存/磁盘 使用与慢请求。 - 以上配置项与流程可显著提升可用性与可维护性,生产环境建议启用 HTTPS 与定时备份策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux环境下GitLab的容器化部署方案
本文地址: https://pptw.com/jishu/783913.html
