在腾讯云CVM上部署最新版GitLab 18
1. 背景
时间 :2025年11月17日
环境 :腾讯云CVM
核心问题:
- 直接拉取
gitlab/gitlab-ce:latest失败,国外镜像访问困难 - 网上很多所谓的"国内镜像"版本陈旧(甚至遇到9年前的版本伪装成latest)
- 需要稳定、可靠的企业级代码托管和CI/CD平台
解决方案:发现腾讯云官方镜像仓库提供了同步更新的GitLab镜像
2. 安装过程记录
2.1 准备工作
bash
# 创建目录结构
mkdir -p /home/docker/gitlab/{config,logs,data}
chmod 777 -R /home/docker/gitlab/*
2.2 拉取镜像
bash
# 使用腾讯云官方镜像 18版本
docker pull mirror.ccs.tencentyun.com/gitlab/gitlab-ce:latest
2.3 启动容器-记得替换你的内网IP
bash
docker run -d \
--hostname 内网IP \
-p 8008:80 -p 8443:443 -p 8222:22 \
--name gitlab \
--restart=always \
-v /home/docker/gitlab/config:/etc/gitlab \
-v /home/docker/gitlab/logs:/var/log/gitlab \
-v /home/docker/gitlab/data:/var/opt/gitlab \
--shm-size 256m \
mirror.ccs.tencentyun.com/gitlab/gitlab-ce:latest
2.4 验证版本
bash
docker exec gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# 输出:18.x.x (当前最新稳定版)
3. 初始配置
3.1 获取初始密码
由于新版本不再自动生成密码文件,需要通过控制台重置:
bash
docker exec -it gitlab gitlab-rails console -e production
在控制台中执行-至少八位:
ruby
user = User.find_by(username: 'root')
user.password = '你的安全密码'
user.password_confirmation = '你的安全密码'
user.save!
exit
3.2 访问地址
- Web界面:http://你的服务器IP:8008
- 用户名:root
- 密码:上面设置的密码
4. 常用维护命令
bash
# 服务管理
docker exec gitlab gitlab-ctl restart # 重启服务
docker exec gitlab gitlab-ctl status # 查看状态
docker exec gitlab gitlab-ctl reconfigure # 重载配置
# 数据备份
docker exec gitlab gitlab-backup create # 创建备份
# 日志查看
docker exec gitlab gitlab-ctl tail nginx # Nginx日志
docker logs -f gitlab # 容器日志
5. 生产环境优劣势分析 容器化和linux本机部署
容器化:快速、隔离、易维护,适合大多数场景
Systemd:性能稍好,但运维复杂,升级困难
6. 修改 git clone端口号 (不修改的话 git clone 不会添加 IP:端口)
完整宿主机配置文件 (/home/docker/gitlab/config/gitlab.rb)
ruby
# 基础配置
external_url 'http://你的内网IP:8008'
gitlab_rails['gitlab_ssh_host'] = '你的内网IP'
gitlab_rails['gitlab_shell_ssh_port'] = 8222
# 邮箱配置 这些不替换被报错的 可以先注释掉
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@yourcompany.com"
gitlab_rails['smtp_password'] = "your-password"
gitlab_rails['smtp_domain'] = "yourcompany.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
# 备份配置
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800
# 性能优化
puma['worker_processes'] = 2
sidekiq['max_concurrency'] = 10
nginx['worker_processes'] = 4
# 安全配置
gitlab_rails['gitlab_default_can_create_group'] = false
gitlab_rails['gitlab_username_changing_enabled'] = false
# 容器特定配置
nginx['listen_port'] = 80
nginx['listen_https'] = false
修改之后 备份配置 应用配置 重启容器
bash
# 1. 备份原配置
cp /home/docker/gitlab/config/gitlab.rb /home/docker/gitlab/config/gitlab.rb.backup
# 2. 用上面的内容覆盖 /home/docker/gitlab/config/gitlab.rb
# 3. 应用配置
docker exec gitlab gitlab-ctl reconfigure
# 4. 重启服务
docker exec gitlab gitlab-ctl restart
优势:
- 直接在宿主机编辑,更方便
- 文件已通过卷映射,容器内实时同步
- 避免进入容器的麻烦
GitLab 日常运维 备份迁移命令
可以设置定时任务 根据公司需要 这里不过多赘述
关于cronjob 参考另外博文:
https://blog.csdn.net/yuezhilangniao/article/details/105144082?spm=1011.2415.3001.5331
1. 备份命令
bash
# 进入容器执行备份(生成带时间戳的备份文件)
docker exec gitlab gitlab-backup create
# 或者直接在宿主机执行
docker exec gitlab gitlab-backup create BACKUP=dump
2. 备份文件位置
bash
# 备份文件在容器内路径
/var/opt/gitlab/backups/
# 对应宿主机路径
/home/docker/gitlab/data/backups/
3. 查看备份文件
bash
ls -la /home/docker/gitlab/data/backups/
# 输出类似:1701234567_gitlab_backup.tar
4. 迁移恢复命令
bash
# 将备份文件复制到新服务器后,在新GitLab容器中执行:
docker exec gitlab gitlab-backup restore BACKUP=备份文件名
# 示例(去掉时间戳和_gitlab_backup.tar):
docker exec gitlab gitlab-backup restore BACKUP=1701234567
5. 完整迁移流程
bash
# 1. 原服务器备份
docker exec gitlab gitlab-backup create
# 2. 复制备份文件到新服务器
scp /home/docker/gitlab/data/backups/1701234567_gitlab_backup.tar user@新服务器:/home/docker/gitlab/data/backups/
# 3. 新服务器恢复
docker exec gitlab gitlab-backup restore BACKUP=1701234567
# 4. 重启服务
docker exec gitlab gitlab-ctl restart
6. 重要配置文件备份
bash
# 备份关键配置文件
cp /home/docker/gitlab/config/gitlab.rb /home/docker/gitlab/config/gitlab.rb.backup
cp /home/docker/gitlab/config/gitlab-secrets.json /home/docker/gitlab/config/gitlab-secrets.json.backup
注意: 确保新旧服务器 GitLab 版本一致或新服务器版本更高。