GitLab Docker 部署与 Personal Access Token 配置指南
GitLab 是常用的代码托管与 DevOps 平台,既可以托管 Git 仓库,也可以通过 Webhook、Access Token 与 Jenkins 等 CI/CD 工具集成。
这篇文章整理 GitLab Docker 部署、基础配置、初始密码、SSH Clone 地址和 Personal Access Token 的创建方式,为后续 Jenkins 集成做准备。
CI/CD 系列文章
本文属于 Jenkins + GitLab + SonarQube CI/CD 系列,相关内容可以继续阅读:
- Git 提交规范实践:Conventional Commits、Commitizen 与 CHANGELOG 自动生成
- GitLab Docker 部署与 Personal Access Token 配置指南
- Jenkins 安装部署与 JDK、Maven、Agent 构建环境配置
- GitLab Webhook 触发 Jenkins Pipeline:Push、Tag 与 Merge Request 自动构建
- Jenkins 基于 GitLab 分支与 Tag 的自动化打包发布实践
- Jenkins 集成 SonarQube:代码扫描、质量门禁与 Pipeline 实践
- SonarQube Docker 部署与 Java 项目静态代码分析指南
- SonarQube for IDE 使用指南:IntelliJ 安装、Connected Mode 与规则同步
- SonarQube LTA 升级与数据库迁移指南:从旧版本到 8.9/9.9/2025 LTA
部署前准备
建议准备:
- 一台 Linux 服务器。
- Docker / Docker Compose 环境。
- 至少 4GB 内存,生产环境建议更高。
- 独立数据目录,用于持久化配置、日志和数据。
Docker 启动 GitLab CE
拉取镜像:
docker pull gitlab/gitlab-ce:latest
启动容器:
docker run -d \
--hostname gitlab.example.com \
--name gitlab \
--restart always \
-p 8443:443 \
-p 8080:80 \
-p 8022:22 \
-v /opt/data/gitlab/config:/etc/gitlab \
-v /opt/data/gitlab/logs:/var/log/gitlab \
-v /opt/data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
生产环境建议固定版本号,不建议长期使用 latest。
配置 external_url 与 SSH 端口
编辑配置:
vim /opt/data/gitlab/config/gitlab.rb
示例:
external_url 'http://10.8.46.203:8080'
gitlab_rails['gitlab_ssh_host'] = '10.8.46.203'
gitlab_rails['gitlab_shell_ssh_port'] = 8022
重新加载配置:
docker exec -it gitlab gitlab-ctl reconfigure
查看初始密码
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
初始密码文件会在一段时间后被清理,首次登录后应立即修改 root 密码。
创建 Personal Access Token
路径:
头像 -> Preferences -> Access Tokens
创建 Token 时建议:
- 设置明确名称,例如
jenkins-ci-token。 - 设置过期时间。
- 只勾选必要权限。
- Jenkins 拉代码通常优先使用 Deploy Token 或专用机器人账号。
- 需要调用 API 时再授予
api权限。
Token 只显示一次,创建后要妥善保存到 Jenkins Credentials 或密钥管理系统,不要写入脚本。
与 Jenkins 集成的准备
后续 Jenkins 集成通常需要:
- GitLab 仓库 HTTP 或 SSH 地址。
- Jenkins 拉代码凭据。
- GitLab Webhook URL。
- Webhook Secret Token。
- 必要时创建 GitLab Personal Access Token。
Webhook 配置可以参考:GitLab Webhook 触发 Jenkins Pipeline:Push、Tag 与 Merge Request 自动构建。
安全建议
- 不要让 root 用户 Token 长期用于 CI。
- Token 要设置过期时间。
- 使用最小权限原则。
- 定期轮换 Jenkins 凭据。
- GitLab 管理后台不要暴露到公网。
- 开启备份策略,定期备份
/var/opt/gitlab。
常见问题
1. Clone 地址端口不正确
检查 external_url 和 gitlab_shell_ssh_port,修改后执行:
docker exec -it gitlab gitlab-ctl reconfigure
2. 容器启动很慢
GitLab 启动组件较多,首次启动需要等待。可以查看日志:
docker logs -f gitlab
3. Token 泄露怎么办
立即撤销 Token,重新生成并更新 Jenkins Credentials,同时排查仓库和流水线日志中是否有泄露。
参考资料
License:
CC BY 4.0