Docker搭建:GitLab
目录
参考:
# Docker搭建:GitLab
# 概要说明
# 常用命令
# 环境依赖
软件/系统 | 版本 | 架构 | 包名 | 安装方式 | 备注 |
---|---|---|---|---|---|
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
2
# 检查镜像
docker images
2
# 环境检查
检查 Docker-compose版本,确保2.0以上版本。
docker-compose version
# 创建目录
# 创建挂载目录:数据/日志/配置
mkdir -p /data/gitlab/{data,logs,config}
2
# 编辑配置
创建Compose文件并编辑配置
vi /data/gitlab/docker-compose.yml
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
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
2
# 查看
docker-compose ls --all
# 查看日志
docker-compose logs <服务名>
# 进入容器执行命令
docker-compose exec <服务名> sh
2
3
4
5
6