Linux版GitLab容器化部署指南
GitLab容器化部署通过Docker实现,具备环境隔离、快速部署、易迁移等优势。以下是详细步骤及注意事项:
安装Docker
根据Linux发行版选择安装方式(以Ubuntu为例):
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
安装Docker Compose(可选但推荐)
Docker Compose简化多容器管理,安装命令:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
准备数据目录
创建宿主机目录用于持久化GitLab数据(避免容器删除后数据丢失):
sudo mkdir -p /srv/gitlab/{config,logs,data}
sudo chown -R 1000:1000 /srv/gitlab # GitLab容器内用户UID为1000,需匹配权限
创建docker-compose.yml文件:
在/srv/gitlab目录下创建docker-compose.yml,内容如下:
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest # 生产环境建议替换为具体版本(如16.5.3-ce.0)
container_name: gitlab
restart: always
hostname: 'gitlab.example.com' # 替换为你的域名或服务器IP
ports:
- '8443:443' # HTTPS端口
- '8080:80' # HTTP端口
- '2222:22' # SSH端口(避免与宿主机SSH冲突)
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
shm_size: '256m' # 共享内存,解决数据库性能问题
启动容器:
在docker-compose.yml所在目录执行:
cd /srv/gitlab && docker-compose up -d
拉取GitLab镜像:
docker pull gitlab/gitlab-ce:latest
创建并启动容器:
docker run -d \
--name gitlab \
--restart always \
--hostname 'gitlab.example.com' \
-p 8443:443 -p 8080:80 -p 2222:22 \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
获取root初始密码
容器启动后,进入容器查看root用户的初始密码:
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
复制输出的密码,用于首次登录。
访问GitLab Web界面
浏览器输入http://<服务器IP>:8080(若配置了域名,替换为域名),使用root账号和初始密码登录。
修改root密码
登录后,系统强制要求修改root密码(密码需包含大小写字母、数字和特殊字符)。
配置外部URL(可选但推荐)
若需使用自定义域名或修改访问端口,编辑GitLab配置文件:
docker exec -it gitlab vim /etc/gitlab/gitlab.rb
修改以下内容(以http://gitlab.example.com为例):
external_url 'http://gitlab.example.com'
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 与Docker端口映射一致
保存后重载配置:
docker exec -it gitlab gitlab-ctl reconfigure
docker exec -it gitlab gitlab-ctl restart
502 Bad Gateway错误
通常因端口冲突或GitLab服务未启动导致。检查端口映射是否冲突(如宿主机80端口已被占用),或重启容器:
docker restart gitlab
SSH连接失败
确保宿主机SSH端口(如2222)已开放,且GitLab配置中的gitlab_shell_ssh_port与端口映射一致。
数据持久化验证
删除容器后,重新使用相同docker-compose.yml或docker run命令启动,数据会从宿主机目录恢复。
gitlab/gitlab-ee(Enterprise Edition)替代gitlab/gitlab-ce(Community Edition),并锁定镜像版本(如gitlab/gitlab-ee:16.5.3-ee.0),避免自动升级导致兼容性问题。/srv/gitlab目录(包含配置、日志、数据),可使用tar命令或GitLab自带的备份工具(gitlab-backup create)。