首页主机资讯GitLab在Debian上的容器化部署如何操作

GitLab在Debian上的容器化部署如何操作

时间2025-12-05 19:13:03发布访客分类主机资讯浏览934
导读:在 Debian 上使用 Docker 部署 GitLab 的完整步骤 一 环境准备 更新系统并安装必要组件: sudo apt update && sudo apt upgrade -y sudo apt instal...

在 Debian 上使用 Docker 部署 GitLab 的完整步骤

一 环境准备

  • 更新系统并安装必要组件:
    • sudo apt update & & sudo apt upgrade -y
    • sudo apt install -y curl openssh-server ca-certificates tzdata perl
  • 安装 Docker(Debian 推荐包名为 docker.io):
    • sudo apt install -y docker.io
    • sudo systemctl start docker & & sudo systemctl enable docker
  • 安装 Docker Compose(可选但推荐,便于多服务编排):
    • 建议方式:sudo apt install -y docker-compose-plugin
    • 或二进制方式:
      • curl -L “https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
      • chmod +x /usr/local/bin/docker-compose
  • 验证安装:
    • docker --version
    • docker compose version 或 docker-compose --version
  • 开放防火墙端口(如使用 UFW):
    • sudo ufw allow 80,443,22/tcp
    • 如使用云服务器,还需在云平台安全组放行对应端口。

二 使用 Docker Compose 部署

  • 创建持久化目录(示例放在 /data/gitlab,可自定义):
    • sudo mkdir -p /data/gitlab/{ config,logs,data}
  • 新建 docker-compose.yml(示例将宿主机 5480/5443/5022 映射到容器内 80/443/22,避免与宿主机 SSH 冲突):
    • version: “3.8” 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’ nginx[‘redirect_http_to_https’] = true gitlab_rails[‘gitlab_shell_ssh_port’] = 5022 ports: - “5480:80” - “5443:443” - “5022: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.yml 同目录执行:docker compose up -d
  • 首次访问与初始化:
    • 浏览器访问:https://gitlab.example.com(或 http://服务器IP:5480 做临时验证)
    • 首次进入设置管理员 root 密码;如需查看初始密码(容器首次启动后 24 小时内有效):
      • sudo docker exec -it gitlab cat /etc/gitlab/initial_root_password。

三 使用 docker run 快速部署(可选)

  • 运行容器(示例将宿主机 8080/8443/2222 映射到容器内 80/443/22):
    • sudo docker run --detach
      –hostname gitlab.example.com
      –restart always
      -p 8080:80 -p 8443:443 -p 2222:22
      –name gitlab
      -v /opt/gitlab/config:/etc/gitlab
      -v /opt/gitlab/logs:/var/log/gitlab
      -v /opt/gitlab/data:/var/opt/gitlab
      -v /etc/localtime:/etc/localtime:ro
      gitlab/gitlab-ce:latest
  • 访问方式与上文一致(注意端口对应为 8080/8443/2222)。

四 关键配置与运维

  • HTTPS 与证书
    • 方式 A(推荐,容器内自动申请与续期):在 docker-compose.yml 的 GITLAB_OMNIBUS_CONFIG 中设置 external_url 为 https://域名,并启用重定向;首次启动后进入容器执行:
      • docker exec -it gitlab gitlab-ctl reconfigure
      • 如需使用 Let’s Encrypt,确保域名可解析到服务器并开放 80/443,然后执行:
        • docker exec -it gitlab gitlab-ctl renew-le-certs
    • 方式 B(手动证书挂载):将证书挂载到容器内 /etc/gitlab/ssl 并在 gitlab.rb 中配置:
      • external_url ‘https://gitlab.example.com’
      • nginx[‘ssl_certificate’] = “/etc/gitlab/ssl/gitlab.example.com.crt”
      • nginx[‘ssl_certificate_key’] = “/etc/gitlab/ssl/gitlab.example.com.key”
      • 执行:docker exec -it gitlab gitlab-ctl reconfigure
  • SSH 克隆端口
    • 若宿主机 SSH 已占用 22,在 gitlab.rb 中设置:gitlab_rails[‘gitlab_shell_ssh_port’] = 5022,并将宿主机的 5022 映射到容器 22;客户端使用:
      • git clone ssh://git@gitlab.example.com:5022/namespace/project.git
  • 备份与恢复
    • 手动备份(备份文件位于挂载的 data/backups 目录):
      • docker exec -t gitlab gitlab-rake gitlab:backup:create
    • 恢复(将 BACKUP 替换为实际备份文件名,不含 .tar):
      • docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=YYYY_MM_DD_HHMMSS
  • 常用运维
    • 查看日志:docker compose logs -f 或 docker logs -f gitlab
    • 进入容器:docker exec -it gitlab bash
    • 重新配置(修改 gitlab.rb 后执行):docker exec -it gitlab gitlab-ctl reconfigure
    • 重启服务:docker compose restart 或 docker restart gitlab。

五 常见问题与优化

  • 端口冲突与端口规划
    • 若宿主机已使用 80/443/22,请映射为其他端口(如 5480/5443/5022),并同步在 external_url 与 gitlab_shell_ssh_port 中调整。
  • 资源与性能
    • 建议为容器设置内存限制(如 docker-compose 的 deploy.resources.limits.memory),并适当调整 Omnibus 配置中的 Puma/Unicorn、Sidekiq 并发与缓存;生产环境建议启用 HTTPS。
  • 邮件与通知
    • 如需 SMTP,在 gitlab.rb 中配置(示例为 QQ 邮箱):
      • gitlab_rails[‘smtp_enable’] = true
      • gitlab_rails[‘smtp_address’] = “smtp.qq.com”
      • gitlab_rails[‘smtp_port’] = 465
      • gitlab_rails[‘smtp_user_name’] = “your@qq.com”
      • gitlab_rails[‘smtp_password’] = “your_authorization_code”
      • gitlab_rails[‘smtp_domain’] = “smtp.qq.com”
      • gitlab_rails[‘smtp_authentication’] = “login”
      • gitlab_rails[‘smtp_enable_starttls_auto’] = false
      • gitlab_rails[‘smtp_tls’] = true
      • gitlab_rails[‘gitlab_email_from’] = “your@qq.com”
      • 执行:docker exec -it gitlab gitlab-ctl reconfigure
  • 升级与回滚
    • 升级:修改 docker-compose.yml 中的镜像标签(如从 17.4.6 升到 17.5.x),执行 docker compose pull & & docker compose up -d;回滚则改回旧标签并重启。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: GitLab在Debian上的容器化部署如何操作
本文地址: https://pptw.com/jishu/765014.html
Debian获取最新版本步骤 FetchDebian如何处理错误代码

游客 回复需填写必要信息