从容器实例到团队可用的代码入口
- 1持久化目录
- 2Compose
- 3Nginx / TLS
- 4Web 与 SSH 克隆
- 5成员接入
先确定数据目录和端口边界,再配置外部访问地址。HTTP 服务不直接暴露公网,Web 经 Nginx 提供 HTTPS;SSH 独立验证克隆路径。域名切换时一起修改 external_url、证书、Runner 入口和镜像配置,避免页面能打开而克隆或流水线仍指向旧地址。
为团队建立统一代码协作入口,并维护迁移期间的仓库和权限规则。
项目、账号与合并请求数量在版本升级前后逐项核对。
先传大文件再更新引用;缺失源对象会阻止该仓库推进。
历史差异扫描分别记录目标领先、分叉与目标独有 refs,未使用强推消除差异。
团队需要统一的代码协作入口,同时处在 GitHub 与自托管 GitLab 并行的迁移阶段。建设工作从实例部署延伸到域名与证书、成员接入和代码同步:既要让新人能够加入团队,也要保证已有分支、标签和大文件在迁移时保持完整。
实际约束之一是服务器无法稳定访问 GitHub,因此镜像任务由一台能访问两端的开发机执行。迁移期间有些仓库已以 GitLab 为主,有些仍以 GitHub 为主,同步方向需要逐仓库、逐分支明确。
迁移完成后,五个核心服务整仓切到 GitLab,内部 GitLab 成为最新代码的权威来源,定时镜像于 2026-10-09 停止,脚本与缓存保留备查。之后的工作转为实例维护:处理磁盘写满事故、配置日志轮转并完成版本升级。
HTTPS 转发到回环地址上的 GitLab HTTP 服务,证书续期后 reload;域名变更同步实例配置、证书和客户端入口。
配置、数据、日志与备份目录分开持久化,容器更新不依赖容器内临时数据。
定期核对符合规则的活动用户与目标组,只提升到最低协作权限,不降级已有高权限成员。
迁移期在能够访问两端的开发机上周期执行,日志保留同步结果和拒绝原因;迁移完成后已停用。
容器日志按 100 MB × 5 轮转,升级后清理旧镜像,避免日志再次写满根盘。
先确定数据目录和端口边界,再配置外部访问地址。HTTP 服务不直接暴露公网,Web 经 Nginx 提供 HTTPS;SSH 独立验证克隆路径。域名切换时一起修改 external_url、证书、Runner 入口和镜像配置,避免页面能打开而克隆或流水线仍指向旧地址。
只推送 heads、tags、notes,不复制 GitHub 的 pull refs。Git LFS 对象先获取并传到目标,再更新 Git refs;源对象缺失则停止该仓库。目标领先或双方分叉时保留现状并记录,目标独有分支默认不删除,已存在但指向不同对象的标签不移动。
版本升级、镜像清理和故障恢复由 Agent 准备和执行,每一步都在得到明确授权后进行。
升级前记录项目、账号和合并请求数量,CE 19.4.1 → 19.5.1 后用 gitlab:check、迁移状态和数量比对确认结果。
版本升级在得到明确批准后执行;清理镜像时记录回收的空间。
升级期间约 2 分 46 秒不可用,记录中不写零停机。
根盘被容器日志写满那次,只清理日志并加上每日轮转,没有重启服务。