GitLab CE 在 macOS Docker 下通过 localhost 部署复盘
下面用一步步提纲方式,带你快速回顾从零到可通过 http://localhost 访问的完整流程。
1. 环境准备
- 安装 Docker Desktop for Mac(支持 Intel & Apple Silicon)。
- 在主目录创建持久化目录:
mkdir -p ~/gitlab/{config,data,logs}/etc/gitlab存配置/var/opt/gitlab存仓库 & 数据库/var/log/gitlab存日志
2. 拉取合适镜像
- Intel (x86_64):
docker pull gitlab/gitlab-ce:latest - Apple Silicon (ARM64):
docker pull yrzr/gitlab-ce-arm64v8:latest
3. 启动 Docker 容器
核心:显式
-p HOST:CONTAINER绑定,且通过环境变量注入external_url
# 如果已跑过旧容器,先停掉并删掉它
docker stop gitlabce && docker rm gitlabce
# 启动新容器
docker run -d \
--name gitlabce \
--hostname gitlab.local \
-p 80:80 \ # 宿主机 80 → 容器 80
-p 443:443 \ # 宿主机 443 → 容器 443
-p 2222:22 \ # 宿主机 2222 → 容器 22(SSH)
-e GITLAB_OMNIBUS_CONFIG="external_url 'http://localhost'" \
-v ~/gitlab/config:/etc/gitlab \
-v ~/gitlab/data:/var/opt/gitlab \
-v ~/gitlab/logs:/var/log/gitlab \
--restart unless-stopped \
gitlab/gitlab-ce:latest
GITLAB_OMNIBUS_CONFIG:自动写入external_url 'http://localhost',首启动即生效--hostname会影响内部external_url默认值;也可改成gitlab.local并修改/etc/hosts
4. 验证端口 & 访问
- 查看端口映射:
应显示docker ps --format "table {{.Names}}\t{{.Ports}}"0.0.0.0:80->80/tcp等映射信息。 - 本机测试:
预期返回curl -I http://localhostHTTP/1.1 200 OK。 - 第一次登录
- 默认用户:
root - 初始密码:
docker exec gitlabce grep 'Password:' /etc/gitlab/initial_root_password
- 默认用户:
5. 后续可选项
- 修改配置
docker exec -it gitlabce bash vi /etc/gitlab/gitlab.rb # 改 external_url、SSH 端口等 gitlab-ctl reconfigure exit - 启用 HTTPS
把gitlab.crt/gitlab.key放到~/gitlab/config/ssl,在gitlab.rb里配置nginx['ssl_certificate']、nginx['ssl_certificate_key'],然后重跑reconfigure。 - 备份与恢复
# 备份 docker exec gitlabce gitlab-backup create # 恢复(指定 BACKUP 文件名) docker exec -it gitlabce gitlab-backup restore BACKUP=TIMESTAMP docker exec gitlabce gitlab-ctl reconfigure
6. 常见冲突 & 解决
- 若宿主机 80/443 被占用,删掉旧
-p 80:80或改成-p 8080:80,并同步更新external_url 'http://localhost:8080'。 - 如需自定义域名,编辑
/etc/hosts,把127.0.0.1 gitlab.local加入,配置external_url 'http://gitlab.local'即可。
至此,你已在 macOS 上通过 Docker 成功跑通 GitLab CE 并可用 http://localhost 访问。
接下来可接入 Runner、LDAP、监控等,打造完整 DevOps 流水线!