gerritcodereview/gerritGerrit Code Review 官方 Docker 镜像提供开箱即用的配置,包含 H2 数据库和 DEVELOPMENT 账户设置。
该镜像可直接用于培训或 staging 环境;若用于生产,需作为基础镜像,自定义 gerrit.config 并配置持久化外部模块。
以下步骤可快速启动 Gerrit 的演示/ staging 环境:
运行 Docker 命令:
bashdocker run -ti -p 8080:8080 -p 29418:29418 gerritcodereview/gerrit
等待几分钟,直至出现 Gerrit Code Review NNN ready 消息(NNN 为当前 Gerrit 版本)。
打开浏览器访问 `[***] 即可使用 Gerrit。
注意:若 Docker 服务器运行在远程主机,需将 localhost 替换为远程主机的域名或 IP。
从 2.14 版本开始,新增引导页面,可指导基础操作并从 Gerrit CI 下载安装额外插件。
如需运行指定版本(如 3.3.0),可使用带标签的镜像:
bashdocker run -ti -p 8080:8080 -p 29418:29418 gerritcodereview/gerrit:3.3.0
Git 仓库中已为各 Gerrit 版本(如 3.3.0)打标签,标签指向对应版本 Dockerfile 的代码状态。构建步骤:
检出目标版本标签:
bashgit checkout v3.3.0
进入系统对应目录(centos/8 或 ubuntu/20),运行构建命令:
bashdocker build -t gerritcodereview/gerrit:$(git describe) .
如需测试自定义 Gerrit 构建,通过 GERRIT_WAR_URL 参数指定 Gerrit war 包 URL:
bashdocker build --build-arg GERRIT_WAR_URL="<war包URL>" -t gerritcodereview/gerrit -f Dockerfile-dev .
默认 URL 指向 Gerrit CI 上 master 分支的最新成功构建结果。
通过 Docker 持久卷可在重启后保留 Gerrit 数据。以下是 docker-compose.yaml 示例,挂载 Git 仓库、索引和缓存目录:
yamlversion: '3' services: gerrit: image: gerritcodereview/gerrit volumes: - git-volume:/var/gerrit/git # Git 仓库数据 - index-volume:/var/gerrit/index # 索引数据 - cache-volume:/var/gerrit/cache # 缓存数据 ports: - "29418:29418" # SSH 端口 - "8080:8080" # HTTP 端口 volumes: git-volume: index-volume: cache-volume:
运行 docker-compose up 启动配置。
可通过以下环境变量修改 Gerrit 配置:
CANONICAL_WEB_URL:可选,设置 gerrit.config 中的 gerrit.canonicalWebUrl,默认值为 http://<镜像主机名>。HTTPD_LISTEN_URL:可选,覆盖 gerrit.config 中的 httpd.listenUrl 参数。生产环境需注意:使用高性能外部存储(优于 Docker 内部 AUFS)、独立配置目录(便于变更追踪),并配置外部认证(如 LDAP)。
假设外部目录 /external/gerrit 已存在,以下是完整配置(含 OpenLDAP 和 PhpLdapAdmin):
yamlversion: '3' services: gerrit: image: gerritcodereview/gerrit ports: - "29418:29418" - "80:8080" depends_on: - ldap volumes: - /external/gerrit/etc:/var/gerrit/etc # 配置文件 - /external/gerrit/git:/var/gerrit/git # Git 仓库 - /external/gerrit/db:/var/gerrit/db # 数据库 - /external/gerrit/index:/var/gerrit/index # 索引 - /external/gerrit/cache:/var/gerrit/cache # 缓存 environment: - CANONICAL_WEB_URL=[***] # command: init # 初始化时取消注释 ldap: image: osixia/openldap ports: - "389:389" - "636:636" environment: - LDAP_ADMIN_PASSWORD=secret volumes: - /external/gerrit/ldap/var:/var/lib/ldap # LDAP 数据 - /external/gerrit/ldap/etc:/etc/ldap/slapd.d # LDAP 配置 ldap-admin: image: osixia/phpldapadmin ports: - "6443:443" environment: - PHPLDAPADMIN_LDAP_HOSTS=ldap
/external/gerrit/etc/)ini[gerrit] basePath = git [index] type = LUCENE [auth] type = ldap gitBasicAuth = true [ldap] server = ldap://ldap username=cn=admin,dc=example,dc=org accountBase = dc=example,dc=org accountPattern = (&(objectClass=person)(uid=${username})) accountFullName = displayName accountEmailAddress = mail [sendemail] smtpServer = localhost [sshd] listenAddress = *:29418 [httpd] listenUrl = [***]] directory = cache [container] user = root
/external/gerrit/etc/,存储敏感信息)ini[ldap] password = secret # LDAP 管理员密码
外部文件系统需通过 gerrit.war 初始化(创建 All-Projects、All-Users 仓库及系统组 UUID):
docker-compose.yaml 中 gerrit 服务的 command: init 注释。bashdocker-compose up gerrit
Initialized /var/gerrit 后,容器会自动退出。command: init,启动所有服务:
bashdocker-compose up -d
PhpLdapAdmin 可通过 `[***] 访问,用于管理 LDAP 用户。首次登录 Gerrit 的用户会被设为管理员,需提前在 LDAP 中创建管理员账户。
cn=admin,dc=example,dc=orgsecret访问 [***] gerritadmin和密码secret` 登录,完成初始化配置。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务