avatar

Ryan's Blog

The first step is always the hardest.

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于
  • 工具
Home GitLab Docker 部署与 Personal Access Token 配置指南
文章

GitLab Docker 部署与 Personal Access Token 配置指南

Posted 2022-01-12 Updated 3 days ago
By Ryan Chen
12~15 min read

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,同时排查仓库和流水线日志中是否有泄露。

参考资料

  • GitLab Docker 安装文档
  • GitLab Personal Access Tokens
  • GitLab Webhooks
指南
GitLab Docker API Token Token 安全配置 安装指南
License:  CC BY 4.0
Share

Further Reading

Jun 27, 2026

Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分

本文整理一套适合 Router Agent + Skill + Runtime 架构的设计原则:Agent 只负责业务决策,Runtime 统一负责执行、恢复、Trace、Checkpoint 和 Evidence,Business Script 只做确定性业务执行。

Sep 9, 2024

Redis 核心概念、数据结构与高可用架构详解

系统梳理 Redis 的核心数据类型、底层结构、过期与淘汰、持久化、事务、主从复制、Sentinel、Cluster、缓存一致性和分布式锁等机制,适合作为 Redis 学习、面试复习和高可用架构设计参考。

Sep 5, 2024

B+树原理与 MySQL InnoDB 索引机制解析

本文从 B+ 树的多叉平衡结构、叶子节点链表、范围查询和磁盘 I/O 特性出发,解释数据库索引为什么常采用 B+ 树,并结合 MySQL InnoDB 的聚簇索引、二级索引、回表、覆盖索引和联合索引机制理解其实际应用。

OLDER

Jenkins 安装部署与 JDK、Maven、Agent 构建环境配置

NEWER

Zipkin 依赖关系图不显示数据排查:zipkin-dependencies、存储配置与定时计算

Recently Updated

  • Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分
  • RocketMQ 架构设计与应用最佳实践:高可用消息队列核心解析
  • Redis 核心概念、数据结构与高可用架构详解
  • B+树原理与 MySQL InnoDB 索引机制解析
  • MySQL AUTO_INCREMENT 插入 0 变成自增值的原因与解决方案

Trending Tags

RocketMQ Windows Feign Docker Zipkin SonarQube OkHttp HttpClient API 性能优化

Contents

©2026 Ryan's Blog. Some rights reserved. · 粤ICP备2022031588号