GitLab CE 在 macOS Docker 下通过 localhost 访问部署复盘

GitLab CE 在 macOS Docker 下通过 localhost 部署复盘

下面用一步步提纲方式,带你快速回顾从零到可通过 http://localhost 访问的完整流程。


1. 环境准备

  1. 安装 Docker Desktop for Mac(支持 Intel & Apple Silicon)。

  2. 在主目录创建持久化目录:

    bash 复制代码
    mkdir -p ~/gitlab/{config,data,logs}
    • /etc/gitlab 存配置
    • /var/opt/gitlab 存仓库 & 数据库
    • /var/log/gitlab 存日志

2. 拉取合适镜像

  • Intel (x86_64):

    bash 复制代码
    docker pull gitlab/gitlab-ce:latest
  • Apple Silicon (ARM64):

    bash 复制代码
    docker pull yrzr/gitlab-ce-arm64v8:latest

3. 启动 Docker 容器

核心:显式 -p HOST:CONTAINER 绑定,且通过环境变量注入 external_url

bash 复制代码
# 如果已跑过旧容器,先停掉并删掉它
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. 验证端口 & 访问

  1. 查看端口映射:

    bash 复制代码
    docker ps --format "table {{.Names}}\t{{.Ports}}"

    应显示 0.0.0.0:80->80/tcp 等映射信息。

  2. 本机测试:

    bash 复制代码
    curl -I http://localhost

    预期返回 HTTP/1.1 200 OK。

  3. 第一次登录

    • 默认用户:root

    • 初始密码:

      bash 复制代码
      docker exec gitlabce grep 'Password:' /etc/gitlab/initial_root_password

5. 后续可选项

  • 修改配置

    bash 复制代码
    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。

  • 备份与恢复

    bash 复制代码
    # 备份
    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 流水线!

相关推荐
架构技术专栏25 分钟前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
码事漫谈1 小时前
你让AI干的活,它可能只干了十分之一——而你根本看不出来
后端
Wx-bishekaifayuan1 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
Wx-bishekaifayuan2 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
WeiXin_DZbishe2 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
WeiXin_DZbishe3 小时前
基于Springboot+AI的kuall音乐广场的设计与实现-计算机毕设 附源码【课程设计】12715
vue.js·人工智能·spring boot·后端·python·php·课程设计
A接拉起0073 小时前
2026 年 JavaScript 开发者需要了解的知识
前端·javascript·后端
Bazingga3 小时前
RAG评测体系保姆级教程:生产级实践指南
后端
tachibana25 小时前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
蜗牛互联网5 小时前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端