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,需匹配权限
二、容器化部署(两种方式)
1. 使用Docker Compose(推荐)
-
创建
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
2. 使用Docker命令行(手动部署)
-
拉取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),避免自动升级导致兼容性问题。 - 防火墙配置:开放宿主机端口(80、443、2222),允许外部访问。
- 备份策略:定期备份
/srv/gitlab目录(包含配置、日志、数据),可使用tar命令或GitLab自带的备份工具(gitlab-backup create)。