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# 检查镜像
docker images环境检查
检查 Docker-compose版本,确保2.0以上版本。
docker-compose version创建目录
# 创建挂载目录:数据/日志/配置
mkdir -p /data/gitlab/{data,logs,config}编辑配置
创建Compose文件并编辑配置
vi /data/gitlab/docker-compose.ymlversion: "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配置说明
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# 查看
docker-compose ls --all
# 查看日志
docker-compose logs <服务名>
# 进入容器执行命令
docker-compose exec <服务名> sh