GitLab在Linux中的容器化部署方案
导读:Linux 上容器化部署 GitLab 的可落地方案 一 方案总览与选型 单机 Docker:最快速上手,适合测试/小型团队,通过挂载卷实现配置、日志、数据持久化。 Docker Compose:在单机基础上提供编排与可维护性,便于统一管...
Linux 上容器化部署 GitLab 的可落地方案
一 方案总览与选型
- 单机 Docker:最快速上手,适合测试/小型团队,通过挂载卷实现配置、日志、数据持久化。
- Docker Compose:在单机基础上提供编排与可维护性,便于统一管理、备份与升级。
- Kubernetes:面向生产级与高可用,结合 Helm 与 Ingress/cert-manager 实现域名、证书与弹性扩展。
二 单机 Docker 快速部署
- 准备与拉取镜像
- 安装并启动 Docker;如需编排可安装 Docker Compose。
- 拉取镜像:docker pull gitlab/gitlab-ce:latest(企业版用 gitlab/gitlab-ee:latest)。
- 运行容器(示例)
- 建议将宿主机端口 80/443/22 映射到容器,便于直接使用标准端口;如冲突可改为 8080/8443/2222。
- 命令示例:
docker run -d \ --hostname gitlab.example.com \ -p 8443:443 -p 8080:80 -p 2222:22 \ --name gitlab \ --restart always \ -v /srv/gitlab/config:/etc/gitlab \ -v /srv/gitlab/logs:/var/log/gitlab \ -v /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
- 首次访问与初始密码
- 浏览器访问:http://服务器IP:8080 或 https://服务器IP:8443。
- 初始 root 密码位于容器内:/etc/gitlab/initial_root_password,文件默认 24 小时内有效,首次登录后请立即修改。
三 Docker Compose 编排部署
- 目录与持久化
- 建议目录结构:/data/gitlab/{ config,logs,data} ,分别挂载到容器内 /etc/gitlab、/var/log/gitlab、/var/opt/gitlab。
- 示例 docker-compose.yml
version: '3.6' services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always hostname: 'gitlab.example.com' environment: TZ: 'Asia/Shanghai' GITLAB_OMNIBUS_CONFIG: | external_url 'https://gitlab.example.com' gitlab_rails['gitlab_shell_ssh_port'] = 22 nginx['redirect_http_to_https'] = true ports: - '80:80' - '443:443' - '22:22' volumes: - /data/gitlab/config:/etc/gitlab - /data/gitlab/logs:/var/log/gitlab - /data/gitlab/data:/var/opt/gitlab - /etc/localtime:/etc/localtime:ro shm_size: '256m' - 启动与常用操作
- 启动:docker-compose up -d
- 重新配置:docker exec -it gitlab gitlab-ctl reconfigure
- 查看日志:docker-compose logs -f
- 说明
- 如需使用非标准 SSH 端口,务必在宿主机与容器内一致,并在 GitLab 中设置 gitlab_rails[‘gitlab_shell_ssh_port’]。
四 Kubernetes 生产级部署
- 前置与仓库
- 准备 Kubernetes 集群与 kubectl/Helm;添加 GitLab Helm 仓库并创建命名空间:
helm repo add gitlab https://charts.gitlab.io helm repo update kubectl create namespace gitlab
- 准备 Kubernetes 集群与 kubectl/Helm;添加 GitLab Helm 仓库并创建命名空间:
- 安装与访问
- 安装:helm install gitlab gitlab/gitlab --namespace gitlab -f values.yaml(可按需定制 values.yaml,如域名、资源、存储等)。
- 获取外部访问地址:kubectl get svc --namespace gitlab(LoadBalancer/Ingress IP 或域名)。
- HTTPS 与证书
- 推荐集成 cert-manager 自动签发 Let’s Encrypt 证书,或预先创建 TLS Secret 并在 Ingress 中引用。
- 备份与监控
- 集群级备份可用 Velero;监控建议接入 Prometheus/Grafana。
五 关键配置与运维要点
- 外部访问与 SSH
- 设置 external_url(HTTP/HTTPS 地址);如 SSH 端口非 22,同步设置 gitlab_rails[‘gitlab_shell_ssh_port’],并确保宿主机端口映射一致。
- HTTPS 两种常用方式
- 自动签发:启用 letsencrypt[‘enabled’] = true 并配置联系邮箱,完成域名验证后自动续期。
- 手动证书:在 /etc/gitlab/ssl/ 放置证书与私钥,并在 nginx 段配置:
修改后执行:gitlab-ctl reconfigure 与 gitlab-ctl restart。nginx['enable'] = true nginx['redirect_http_to_https'] = true nginx['ssl_certificate'] = "/etc/gitlab/ssl/server_cert.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/private.key"
- 资源与健康检查
- 建议设置容器资源限制(如 CPU/内存),并配置健康检查(示例:/opt/gitlab/bin/gitlab-healthcheck)。
- 邮件与通知
- 如需 SMTP,在 gitlab.rb 中配置 smtp_enable/smtp_address/smtp_port/smtp_user_name/smtp_password 等,然后 reconfigure 生效。
- 备份与恢复
- 定期备份:/opt/gitlab/bin/gitlab-backup create;恢复:/opt/gitlab/bin/gitlab-backup restore BACKUP=timestamp。
- 安全与合规
- 首次登录后立即修改 root 密码;按需关闭用户注册、开启双重认证、限制出站网络与容器资源。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: GitLab在Linux中的容器化部署方案
本文地址: https://pptw.com/jishu/764302.html
