CentOS中GitLab的容器化部署方案
CentOS中GitLab容器化部署方案
一、前提条件
- 操作系统:CentOS 7或更高版本(建议使用CentOS Stream或RHEL兼容系统);
- Docker引擎:需安装并运行Docker(推荐使用Docker CE版本);
- Docker Compose(可选但推荐):用于简化多容器管理(如搭配GitLab Runner时);
- 主机资源:建议分配至少4GB内存、2核CPU及50GB以上磁盘空间(GitLab对资源消耗较大)。
二、基础部署步骤
1. 安装Docker
更新系统并安装必要依赖,添加Docker官方仓库后安装Docker CE:
sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker &
&
sudo systemctl enable docker
验证Docker安装:
docker --version # 应输出类似"Docker version 24.xx.xx"的版本信息
2. 安装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
验证安装:
docker-compose --version # 应输出类似"docker-compose version v2.24.5"的信息
3. 创建挂载目录
GitLab的数据(配置、日志、仓库)需持久化存储,避免容器删除后数据丢失。创建专用目录:
sudo mkdir -p /opt/gitlab/{
config,logs,data}
sudo chown -R $USER:$USER /opt/gitlab # 授予当前用户读写权限
4. 拉取GitLab镜像
从Docker Hub拉取GitLab Community Edition(CE)最新镜像:
docker pull gitlab/gitlab-ce:latest
若需指定版本(如17.0.0
),可将latest
替换为对应版本号(如gitlab/gitlab-ce:17.0.0
)。
5. 配置并启动GitLab容器
创建docker-compose.yml
文件(或在命令行直接运行docker run
),配置端口映射、卷挂载及环境变量:
方式一:使用docker-compose.yml(推荐)
version: '3.8'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always # 容器退出时自动重启
hostname: 'gitlab.example.com' # 替换为你的域名或公网IP
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com' # 外部访问URL(需与hostname一致)
ports:
- '80:80' # HTTP端口
- '443:443' # HTTPS端口(需配置SSL证书后启用)
- '22:22' # SSH端口(默认22,若冲突可修改为其他端口)
volumes:
- '/opt/gitlab/config:/etc/gitlab' # 配置文件目录
- '/opt/gitlab/logs:/var/log/gitlab' # 日志文件目录
- '/opt/gitlab/data:/var/opt/gitlab' # 数据目录(仓库、数据库等)
方式二:使用docker run命令(直接运行)
docker run -d \
--name gitlab \
--restart always \
--hostname gitlab.example.com \
-p 80:80 -p 443:443 -p 22:22 \
-v /opt/gitlab/config:/etc/gitlab \
-v /opt/gitlab/logs:/var/log/gitlab \
-v /opt/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
6. 访问GitLab
启动容器后,等待1-2分钟(GitLab初始化需时间),在浏览器中访问http://gitlab.example.com
(替换为你的实际域名/IP)。首次访问需设置root用户初始密码(密码长度需≥8位),设置完成后使用root
账号登录。
三、常见问题解决
1. 端口冲突
若主机80
、443
或22
端口已被占用,可修改docker-compose.yml
中的ports
配置(如将80:80
改为8080:80
),或停止占用端口的服务:
sudo netstat -tulnp | grep :80 # 查看80端口占用进程
sudo systemctl stop nginx # 示例:停止nginx服务
2. 初始化超时
若访问时出现502错误,可能是GitLab初始化未完成。可通过以下命令查看容器日志,确认初始化进度:
docker logs -f gitlab # 实时查看gitlab容器日志
若日志显示“Initialization complete”,说明初始化完成,可刷新页面重试。
3. 配置修改
若需修改GitLab配置(如external_url
、SSH端口),可编辑容器内的/etc/gitlab/gitlab.rb
文件:
docker exec -it gitlab /bin/bash # 进入gitlab容器
vim /etc/gitlab/gitlab.rb # 编辑配置文件(如修改external_url)
exit # 退出容器
docker exec -it gitlab gitlab-ctl reconfigure # 重新加载配置
docker exec -it gitlab gitlab-ctl restart # 重启gitlab服务
四、后续优化建议
- 配置SSL证书:使用Let’s Encrypt免费获取SSL证书,修改
external_url
为https://gitlab.example.com
,并配置Nginx反向代理(或使用GitLab内置的Nginx); - 资源限制:在
docker-compose.yml
中添加mem_limit
、cpu_shares
等参数,限制GitLab容器使用的资源(如mem_limit: 4g
); - 备份策略:定期备份
/opt/gitlab/data
目录(包含仓库、数据库等核心数据),可使用rsync
或tar
命令; - 监控告警:部署Prometheus+Grafana监控GitLab容器的CPU、内存、磁盘使用情况,设置告警阈值。
通过以上步骤,即可在CentOS上完成GitLab的容器化部署。容器化部署具有轻量、灵活、易迁移的特点,适合快速搭建GitLab实例或测试环境。生产环境中建议结合Kubernetes或Docker Swarm进行编排,提升可用性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS中GitLab的容器化部署方案
本文地址: https://pptw.com/jishu/732426.html