从零开始部署 GitLab CE 18.4.2:Docker Compose 新手教程

🛠️ 本教程将带你一步步部署 GitLab Community Edition 18.4.2,使用 Docker Compose 构建一个资源受控、配置可维护、适合团队协作的 Git 仓库平台。适合 DevOps 初学者、独立开发者或小型团队。


📦 一、准备工作

✅ 系统要求

  • 操作系统:Linux(推荐 Ubuntu 20.04+ 或 CentOS 7+)
  • 已安装 Docker 和 Docker Compose
  • 主机 IP:192.168.0.11(可根据实际情况修改)
  • 已创建 Docker 网络 docker_net(用于与其他服务互联)

创建网络命令:

bash 复制代码
docker network create docker_net

📁 二、目录结构初始化

我们将 GitLab 的配置、日志和数据分别挂载到本地目录,便于备份、迁移和版本控制。

📂 创建项目目录

bash 复制代码
mkdir -p /home/dk_project/dk_app/gitlab/{config,logs,data}

📄 准备配置文件

bash 复制代码
# 如果你已有 gitlab.rb,可复制进去
cp /etc/gitlab/gitlab.rb /home/dk_project/dk_app/gitlab/config/

# 如果没有,可先创建一个空文件,后续 GitLab 会自动生成
touch /home/dk_project/dk_app/gitlab/config/gitlab.rb

📄 三、创建 .env 文件

.env 文件用于集中管理变量,方便修改和复用。

路径:/home/dk_project/dk_app/gitlab/.env

内容如下:

env 复制代码
VERSION=18.4.2-ce.0
CONTAINER_NAME=gitlab-server
HOST_IP=0.0.0.0
WEB_HTTP_PORT=80
WEB_HTTPS_PORT=443
WEB_SSH_PORT=22
DOMAIN_HOST=192.168.0.11
CPUS=12
MEMORY_LIMIT=24576MB
APP_PATH=/home/dk_project/dk_app/gitlab

🧩 四、创建 docker-compose.yml 文件

路径:/home/dk_project/dk_app/gitlab/docker-compose.yml

内容如下:

yaml 复制代码
version: "3.8"

services:
  gitlab:
    image: gitlab/gitlab-ce:${VERSION}
    container_name: ${CONTAINER_NAME}
    deploy:
      resources:
        limits:
          cpus: ${CPUS}
          memory: ${MEMORY_LIMIT}
        reservations:
          cpus: "8"
          memory: 16384M
    restart: always
    hostname: ${DOMAIN_HOST}

    shm_size: "2048m"

    ports:
      - "${HOST_IP}:${WEB_HTTP_PORT}:80"
      - "${HOST_IP}:${WEB_HTTPS_PORT}:443"
      - "${HOST_IP}:${WEB_SSH_PORT}:22"

    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://${DOMAIN_HOST}'

    volumes:
      - ${APP_PATH}/config:/etc/gitlab
      - ${APP_PATH}/logs:/var/log/gitlab
      - ${APP_PATH}/data:/var/opt/gitlab
      - ${APP_PATH}/config/gitlab.rb:/etc/gitlab/gitlab.rb:ro

    healthcheck:
      test: ["CMD", "/opt/gitlab/bin/gitlab-healthcheck", "--fail"]
      interval: 60s
      timeout: 10s
      retries: 3
      start_period: 180s

    sysctls:
      net.core.somaxconn: 1024
      net.ipv4.tcp_max_syn_backlog: 2048

    ulimits:
      nofile:
        soft: 65536
        hard: 65536
      nproc:
        soft: 65536
        hard: 65536

    labels:
      createdBy: "docker_apps"
      app: "gitlab"
      version: "${VERSION}"

    networks:
      - docker_net

networks:
  docker_net:
    external: true

🚀 五、启动 GitLab 服务

进入项目目录并启动服务:

bash 复制代码
cd /home/dk_project/dk_app/gitlab
docker compose --env-file .env up -d

首次启动可能需要几分钟,请耐心等待。


🌐 六、访问与初始化

浏览器访问:

复制代码
http://192.168.0.11

首次登录会提示设置管理员密码,默认用户名为 root

GitLab 会将密码写入一个文件 /etc/gitlab/initial_root_password,也可以通过以下命令查看:

bash 复制代码
docker exec -it gitlab-server cat /etc/gitlab/initial_root_password

🔐 七、后续建议

  • ✅ 配置 HTTPS:建议使用 Nginx 反向代理或 Let's Encrypt
  • ✅ 设置 SMTP:确保通知邮件可正常发送
  • ✅ 定期备份:使用 gitlab-backup 工具自动化备份
  • ✅ 资源监控:结合 docker stats 或 Prometheus 监控容器运行状态
相关推荐
“码”力全开9 小时前
打破芯片与协议壁垒:基于 Docker + 边缘计算的 GB28181/RTSP 视频智能管理平台架构设计与源码交付方案
docker·音视频·边缘计算
geshifei10 小时前
K8s 容器运行 UnixBench — 代理机器执行记录
云原生·容器·kubernetes
Albert Edison12 小时前
【Docker】Ubuntu22.04 安装 Docker 教程
运维·docker·容器
AI服务老曹12 小时前
基于Docker的低代码AI视频管理平台架构解析:打通GB28181/RTSP多协议,支持异构边缘计算与全源码交付
人工智能·低代码·docker
codefan※13 小时前
一键部署私人 LLM:Ollama + Docker 极简指南
运维·docker·容器·大模型·llm·本地部署·ollama
李南想做条咸鱼14 小时前
k8s集群容器访问域名第一次不通,第二次必通如何解决
云原生·容器·kubernetes
FelixBitSoul14 小时前
K8s 调度器黑盒全拆解:拓扑约束数学陷阱 + Go 插件二开实战(避坑全记录)
容器·kubernetes
IT策士15 小时前
Docker 网络进阶:容器间通信与 DNS 解析
网络·docker·容器
热爱Liunx的丘丘人16 小时前
Docker Compose 实现 Nginx 与 MySQL 多容器服务编排
mysql·nginx·docker
热爱Liunx的丘丘人16 小时前
Docker
运维·docker·容器