GitLab在Linux上的容器化部署指南(基于Docker)
Docker是GitLab容器化的基础环境,需先通过包管理器安装(以Ubuntu为例):
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl openssh-server ca-certificates tzdata perl
curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
用于简化多容器应用的管理(如GitLab+CI/CD):
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证安装:docker-compose --version
。
步骤1:创建数据目录
用于持久化存储GitLab的配置、日志和数据(避免容器删除后数据丢失):
mkdir -p /data/gitlab/{config,logs,data}
步骤2:创建docker-compose.yml
文件
在/data/gitlab
目录下创建文件,内容如下:
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest # 使用社区版镜像(如需企业版,替换为gitlab/gitlab-ee:latest)
container_name: gitlab
restart: always # 容器自动重启
ports:
- '5480:80' # HTTP端口(Web界面)
- '5443:443' # HTTPS端口
- '5022:22' # SSH端口(默认22,可修改为其他端口)
volumes:
- './config:/etc/gitlab' # 配置文件挂载
- './logs:/var/log/gitlab' # 日志文件挂载
- './data:/var/opt/gitlab' # 数据文件挂载(仓库、数据库等)
shm_size: '256m' # 共享内存大小(解决GitLab运行时的内存不足问题)
步骤3:启动GitLab容器
进入/data/gitlab
目录,执行:
docker-compose up -d
步骤4:获取初始root密码
容器启动后,进入容器查看初始密码:
docker exec -it gitlab /bin/bash
cat /etc/gitlab/initial_root_password
exit
步骤5:访问GitLab Web界面
在浏览器输入http://<服务器IP>:5480
,使用root
账号和上述初始密码登录。
若未使用Docker Compose,可通过以下命令快速部署:
docker run -d \
--hostname gitlab.example.com \ # 设置容器主机名(需与external_url一致)
-p 8443:443 -p 8080:80 -p 2222:22 \ # 端口映射(自定义宿主机端口)
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \ # 自定义数据目录
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
注意:启动后需通过docker exec
进入容器获取初始密码(同上)。
若需使用自定义域名或IP,需修改GitLab配置文件:
docker exec -it gitlab /bin/bash
vim /etc/gitlab/gitlab.rb
找到external_url
配置项,修改为:
external_url 'http://your_server_ip' # 或'https://your_domain.com'
保存后退出,执行以下命令使配置生效:
gitlab-ctl reconfigure
gitlab-ctl restart
GitLab支持Let’s Encrypt免费证书,修改gitlab.rb
文件:
letsencrypt['enabled'] = true
letsencrypt['contact_emails'] = ['your.email@example.com'] # 填写有效邮箱
执行gitlab-ctl reconfigure
和gitlab-ctl restart
即可自动申请证书。
volumes
挂载的宿主机目录存在且有读写权限(如/data/gitlab
目录需由当前用户拥有)。docker-compose.yml
或docker run
中的端口映射(如将5480:80
改为8080:80
)。gitlab.rb
中的gitlab_rails['signup_enabled'] = false
。