Linux中GitLab的容器化部署
Linux环境下GitLab容器化部署指南(基于Docker Compose)
一、准备工作
1. 安装Docker与Docker Compose
GitLab容器化部署依赖Docker引擎和Docker Compose(用于简化多容器管理)。
- 安装Docker:
更新系统包并添加Docker官方GPG密钥,然后安装Docker CE(社区版):sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install -y docker-ce sudo systemctl start docker & & sudo systemctl enable docker # 启动并设置开机自启 - 安装Docker Compose:
下载最新版Docker Compose二进制文件并赋予执行权限:sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
2. 准备数据卷目录
GitLab的数据(配置、日志、仓库文件)需通过卷挂载到宿主机以实现持久化。创建专用目录(如/srv/gitlab):
sudo mkdir -p /srv/gitlab/{
config,logs,data}
sudo chown -R 1000:1000 /srv/gitlab # GitLab容器内用户UID为1000,需匹配权限
二、使用Docker Compose部署GitLab
1. 创建docker-compose.yml文件
在/srv/gitlab目录下创建docker-compose.yml,定义GitLab服务及资源配置:
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest # 推荐使用稳定版标签(如26.0.0-ce.0)
container_name: gitlab
restart: always # 开机自启
hostname: 'gitlab.example.com' # 替换为你的服务器域名或IP
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com' # 初始外部URL(后续可修改)
ports:
- '8080:80' # HTTP端口(宿主机:容器)
- '8443:443' # HTTPS端口(可选)
- '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' # 共享内存(解决高并发时的性能问题)
2. 启动GitLab容器
在docker-compose.yml所在目录执行以下命令:
cd /srv/gitlab
docker-compose up -d # 后台启动容器
等待容器启动完成(约1-2分钟),可通过docker ps查看容器状态。
三、初始配置与访问
1. 获取初始root密码
GitLab容器启动后,初始root用户的密码会保存在容器内的/etc/gitlab/initial_root_password文件中。执行以下命令查看:
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
输出结果类似:Password: xk9fj2a1b3c4d5e6f7g8h9i0j,记下该密码。
2. 访问GitLab Web界面
打开浏览器,输入http://<
服务器IP或域名>
:8080(如http://192.168.1.100:8080),进入登录页面。
- 用户名:
root - 密码:上一步获取的初始密码
首次登录后,系统会强制要求修改root密码(建议设置为复杂密码,包含大小写字母、数字和符号)。
3. 配置外部URL(可选)
若需使用自定义域名(如gitlab.yourdomain.com),需修改GitLab全局配置:
docker exec -it gitlab vim /etc/gitlab/gitlab.rb
找到external_url配置项,修改为你的域名:
external_url 'http://gitlab.yourdomain.com'
保存退出后,重新配置GitLab使更改生效:
docker exec -it gitlab gitlab-ctl reconfigure
docker exec -it gitlab gitlab-ctl restart
重启后,通过新域名访问GitLab即可。
四、常见问题排查
1. 端口冲突
若宿主机80、443或22端口已被占用,修改docker-compose.yml中的ports配置(如将8080:80改为9090:80),并同步更新external_url中的端口。
2. 502 Bad Gateway错误
通常因GitLab服务未完全启动或配置错误导致。解决方法:
- 等待2-3分钟(GitLab启动较慢);
- 检查容器日志:
docker logs -f gitlab,定位具体错误(如端口冲突、磁盘空间不足); - 修改
gitlab.rb中的unicorn['port'](如改为8084),并重新配置。
3. 权限问题
若出现“Permission denied”错误,确保宿主机挂载目录的权限正确(chown -R 1000:1000 /srv/gitlab),或以root用户运行容器(不推荐)。
五、后续维护
1. 备份数据
GitLab数据存储在/srv/gitlab/data目录(卷挂载),定期备份该目录即可(如使用rsync或tar命令)。
2. 更新GitLab
若需升级GitLab版本,修改docker-compose.yml中的image标签(如gitlab/gitlab-ce:26.1.0-ce.0),然后执行:
docker-compose pull # 拉取新镜像
docker-compose up -d # 重启容器(自动应用新版本)
注意:升级前建议备份数据,避免版本兼容性问题。
3. 配置HTTPS(可选)
为提升安全性,建议配置Let’s Encrypt免费SSL证书。修改gitlab.rb文件:
letsencrypt['enabled'] = true
letsencrypt['contact_emails'] = ['your.email@example.com']
external_url 'https://gitlab.example.com'
重新配置并重启:
docker exec -it gitlab gitlab-ctl reconfigure
docker exec -it gitlab gitlab-ctl restart
配置完成后,通过https://gitlab.example.com访问GitLab(浏览器地址栏显示锁图标)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux中GitLab的容器化部署
本文地址: https://pptw.com/jishu/745298.html
