GitLab如何在Linux上进行容器化部署
导读:Linux 上容器化部署 GitLab 实操指南 一 环境准备与目录规划 安装 Docker(以 Ubuntu/Debian 为例): 更新索引并安装依赖:sudo apt-get update && sudo apt-...
Linux 上容器化部署 GitLab 实操指南
一 环境准备与目录规划
- 安装 Docker(以 Ubuntu/Debian 为例):
- 更新索引并安装依赖:sudo apt-get update & & sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
- 添加 Docker 官方 GPG 与仓库,安装 Docker CE:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -;sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”;sudo apt-get update & & sudo apt-get install -y docker-ce
- 启动并设置开机自启:sudo systemctl start docker & & sudo systemctl enable docker
- 安装 Docker Compose(可选但推荐):sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose & & sudo chmod +x /usr/local/bin/docker-compose
- 创建持久化目录(示例):sudo mkdir -p /srv/gitlab/{ config,logs,data} (权限建议:chown -R 998:998 /srv/gitlab,容器内 GitLab 以 998 用户运行)
二 部署方式
- 方式一 Docker Compose(推荐)
- 新建 docker-compose.yml(示例映射为 5480:80、5443:443、5022:22,便于与宿主机已有服务共存):
version: '3.6' services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always hostname: 'gitlab.example.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.example.com:5480' gitlab_rails['gitlab_shell_ssh_port'] = 5022 gitlab_rails['time_zone'] = 'Asia/Shanghai' ports: - '5480:80' - '5443:443' - '5022:22' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab' shm_size: '256m' - 启动:docker-compose up -d
- 新建 docker-compose.yml(示例映射为 5480:80、5443:443、5022:22,便于与宿主机已有服务共存):
- 方式二 docker run
- 启动容器(示例映射为 8080:80、8443:443、2222:22):
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
- 启动容器(示例映射为 8080:80、8443:443、2222:22):
- 首次登录与初始密码
- 等待数分钟初始化后,获取初始 root 密码:docker exec -it gitlab cat /etc/gitlab/initial_root_password
- 访问:http://服务器IP:5480 或 https://服务器IP:5443,使用 root 与初始密码登录并设置新密码
三 关键配置
- 外部访问地址与端口
- 编辑宿主机挂载的配置文件:/srv/gitlab/config/gitlab.rb,设置:external_url ‘http://gitlab.example.com:5480’(若使用 HTTPS 则为 https://…)
- 如 SSH 端口改为 5022,需同步设置:gitlab_rails[‘gitlab_shell_ssh_port’] = 5022
- 应用配置:docker exec -it gitlab gitlab-ctl reconfigure
- HTTPS 与证书
- 方式 A 内置 Let’s Encrypt(推荐)
- 在 gitlab.rb 中启用:
external_url 'https://gitlab.example.com' letsencrypt['enabled'] = true letsencrypt['contact_emails'] = ['admin@example.com'] - 执行:gitlab-ctl reconfigure(将自动申请并续期证书)
- 在 gitlab.rb 中启用:
- 方式 B 手动证书(已有证书)
- 将证书放入容器内目录(如 /etc/gitlab/ssl/),并在 gitlab.rb 中配置:
external_url 'https://gitlab.example.com' nginx['enable'] = true nginx['redirect_http_to_https'] = true nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem" - 执行:gitlab-ctl reconfigure & & gitlab-ctl restart
- 将证书放入容器内目录(如 /etc/gitlab/ssl/),并在 gitlab.rb 中配置:
- 方式 A 内置 Let’s Encrypt(推荐)
- 常见调优项
- 时区:gitlab_rails[‘time_zone’] = ‘Asia/Shanghai’
- 上传大小:nginx[‘client_max_body_size’] = ‘250m’
- 内存与共享内存:建议为容器设置 --shm-size=256m 或更高(Compose 中 shm_size: ‘256m’)
四 运维与安全要点
- 防火墙放行:确保放行对应端口(示例为 80/443/22 或自定义的 5480/5443/5022)
- firewalld:firewall-cmd --add-port=80/tcp --permanent & & firewall-cmd --add-port=443/tcp --permanent & & firewall-cmd --add-port=22/tcp --permanent & & firewall-cmd --reload
- 备份与恢复
- 备份:docker exec -it gitlab gitlab-backup create(备份文件位于 /var/opt/gitlab/backups,宿主机挂载路径为 /srv/gitlab/data/backups)
- 恢复:将备份文件放入上述目录后执行:docker exec -it gitlab gitlab-backup restore BACKUP=timestamp
- 升级与迁移
- 升级:修改 docker-compose.yml 中镜像版本(如从 15.0 到 15.11),执行 docker-compose pull & & docker-compose up -d;或先备份再重建容器
- 迁移:拷贝整个 /srv/gitlab 目录到新主机,保持目录结构与权限一致后启动容器即可
- 安全建议
- 修改默认管理员密码、限制注册、开启 2FA、定期更新镜像与系统、仅暴露必要端口、证书与密钥妥善管控
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: GitLab如何在Linux上进行容器化部署
本文地址: https://pptw.com/jishu/749017.html
