Docker搭建:GitLab

12/31/2024 运维操作系统Docker

目录


参考:


# Docker搭建:GitLab

# 概要说明

# 常用命令


1

# 环境依赖

软件/系统 版本 架构 包名 安装方式 备注
Docker 28.0.1
Docker Compose v2.34.0
GitLab-CE 16.11.5-ce.0

# 安装搭建

# 包下载

# 拉取指定版本的镜像
docker pull gitlab/gitlab-ce:16.11.5-ce.0
1
2
# 检查镜像
docker images
1
2

# 环境检查

检查 Docker-compose版本,确保2.0以上版本。

docker-compose version
1

CentOS搭建:Docker-compose

# 创建目录

# 创建挂载目录:数据/日志/配置
mkdir -p /data/gitlab/{data,logs,config} 
1
2

# 编辑配置

创建Compose文件并编辑配置

vi /data/gitlab/docker-compose.yml
1
version: "3"
services:
  gitlab:
    container_name: gitlab
    image: gitlab/gitlab-ce:16.11.5-ce.0
    hostname: '192.168.3.127'
    restart: always
    privileged: true
    ports:
      - 8011:8011
      - 8443:443
      - 2222:22/tcp
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/gitlab/data:/var/opt/gitlab
      - /data/gitlab/config:/etc/gitlab
      - /data/gitlab/logs:/var/log/gitlab
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url='http://192.168.3.127:8011'
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
    deploy:
      resources:
        limits:
           memory: 4G
        reservations:
           memory: 1G
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

配置说明

  • version: "3":使用 Docker Compose 文件格式的版本 3,支持大多数现代 Docker 功能。

  • services:定义要启动的服务。

    • gitlab:启动的服务项,GitLab。

      • container_name: gitlab:为容器指定名称 gitlab,便于后续管理。

      • image: gitlab/gitlab-ce:16.11.5-ce.0:使用 GitLab 社区版镜像,版本号为 16.11.5-ce.0(固定版本,避免自动升级)。

      • hostname: '192.168.3.127':设置容器内部的主机名(通常与宿主机的 IP 一致,用于配置外部访问)。

      • restart: always:容器退出时自动重启(确保服务高可用)。

      • privileged: true:将容器设置为特权模式,特权模式允许容器拥有与主机相同的权限,可执行特权操作,如访问主机的设备、修改内核参数等。

      • ports:端口映射规则

        • 8011:8011:HTTP 访问端口(容器内 8011 映射到宿主机 8011)。
        • 8443:443:HTTPS 访问端口(容器内 443 映射到宿主机 8443)。
        • 2222:22/tcp:SSH 访问端口(容器内 22 映射到宿主机 2222)。
      • volumes:数据持久化

        • /etc/localtime:/etc/localtime:挂载宿主机的时区文件到容器,确保容器时间与时区与宿主机一致。
        • /data/gitlab/data:/var/opt/gitlab:挂载 GitLab 的核心数据目录(如仓库、附件等)。
        • /data/gitlab/config:/etc/gitlab:挂载 GitLab 的配置文件目录(如 gitlab.rb)。
        • /data/gitlab/logs:/var/log/gitlab:挂载 GitLab 的日志目录,便于排查问题。
      • environment:环境变量配置

        • GITLAB_OMNIBUS_CONFIG:通过环境变量配置 GitLab 的关键参数:

          • external_url 'http://192.168.3.127:8011':设置 GitLab 的外部访问 URL(通过此地址访问 GitLab)。

          • gitlab_rails['gitlab_shell_ssh_port'] = 2222:指定 SSH 端口为 2222(与端口映射中的 2222:22 一致)。

      • deploy:部署配置(通常配合 Docker Swarm 使用)

  • resources:定义容器的资源限制 - limits:限制

    • memory: 4G:限制容器最多使用 4GB 内存。

      • reservations:保障
    • memory: 1G:保证容器至少有 1GB 内存可用。

配置注意

  • hostname

    • 非必需hostname 不是必须配置的参数,按需配置,根据应用需求和网络环境决定是否显式设置。
    • 默认行为安全:省略时容器会使用自动生成的主机名,格式为 <容器ID的前12位>,通常不会引发问题。
    • 必要配置场景
      • 应用依赖主机名,某些应用程序(如传统软件)可能硬编码了主机名配置(如许可证绑定、配置文件中的主机名检查)。
      • 服务发现与负载均衡:在 Docker Swarm 中,显式配置 hostname 可以更精确地控制服务发现行为(如通过主机名路由到特定服务实例)。

# 进行安装

# 启动
docker-compose -f docker-compose.yml up -d
1
2
# 查看
docker-compose ls --all
# 查看日志
docker-compose logs <服务名>
# 进入容器执行命令
docker-compose exec <服务名> sh
1
2
3
4
5
6

# 访问配置及验证

上次更新时间: 3/27/2025, 9:08:03 AM