CentOS GitLab容器化部署实践指南
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
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 Hub获取最新稳定版的GitLab Community Edition(CE)镜像:
docker pull gitlab/gitlab-ce:latest
为保证数据持久化,需在宿主机创建专用目录用于挂载GitLab的配置、日志和数据:
mkdir -p /data/gitlab/{config,logs,data}
使用docker run命令启动容器,关键参数说明:
--hostname:设置容器的主机名(需与后续配置的external_url一致);-p:映射宿主机端口到容器端口(HTTP:80、HTTPS:443、SSH:22);--restart always:容器退出时自动重启;-v:挂载数据卷(配置→/etc/gitlab、日志→/var/log/gitlab、数据→/var/opt/gitlab)。完整命令示例:
docker run -d \
--hostname gitlab.example.com \
-p 80:80 -p 443:443 -p 22:22 \
--name gitlab \
--restart always \
-v /data/gitlab/config:/etc/gitlab \
-v /data/gitlab/logs:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
容器启动后,等待初始化完成(约5-10分钟),通过浏览器访问http://<服务器IP>,首次登录需设置root用户密码(默认密码可通过cat /data/gitlab/config/initial_root_password查看,若未生成则等待初始化完成)。
external_url:/etc/gitlab/gitlab.rb文件(通过docker exec -it gitlab /bin/bash进入),设置外部访问URL:external_url 'http://gitlab.example.com'
若需启用HTTPS,可使用Let’s Encrypt免费证书,修改为:external_url 'https://gitlab.example.com'
然后重启GitLab使配置生效:docker exec -it gitlab gitlab-ctl reconfigure && docker exec -it gitlab gitlab-ctl restart
在gitlab.rb中添加SMTP配置(以Gmail为例):
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your_email@gmail.com"
gitlab_rails['smtp_password'] = "your_app_password" # 需使用应用专用密码
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "your_email@gmail.com"
保存后重启GitLab:
docker exec -it gitlab gitlab-ctl reconfigure && docker exec -it gitlab gitlab-ctl restart
若需实现CI/CD,可部署GitLab Runner容器:
docker pull gitlab/gitlab-runner:latest
<GITLAB_URL>和<TOKEN>):docker run -it --rm gitlab/gitlab-runner register
输入GitLab实例URL和注册令牌(可在GitLab项目→Settings→CI/CD→Runners中获取),选择执行器(推荐docker),最后启动Runner:docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest
-p 2222:22),并在gitlab.rb中同步修改gitlab_shell_ssh_port。config、logs、data目录到宿主机,避免容器删除后数据丢失;/etc/ssh/sshd_config中的PermitRootLogin no);docker pull gitlab/gitlab-ce:latest);firewall-cmd命令:sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --reload
docker exec gitlab gitlab-rake gitlab:backup:create),备份文件默认存储在/var/opt/gitlab/backups目录(需挂载到宿主机)。