
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Gerrit代码审查系统Docker镜像,支持外部数据库和OpenLDAP集成。该镜像基于openjdk:jre-alpine或openjdk:jre-slim构建,具有体积小、启动快的特点。
latest标签并非生产就绪版本,新功能会先在此进行测试。分支标签(如2.14.x或2.15.x)用于跟踪Gerrit的发布版本,经过验证的新功能会先合并到这些分支,然后包含在下次https://github.com/openfrontier/docker-gerrit/releases%E4%B8%AD%E3%80%82
自Gerrit 2.16起,NoteDB成为存储账户和组数据的必需组件。建议同时将变更数据迁移到NoteDB。容器启动时会自动离线迁移账户和组数据到NoteDB。变更数据可通过MIGRATE_TO_NOTEDB_OFFLINE环境变量进行离线迁移。注意,变更数据迁移所需时间约为离线重新索引的两倍,因为迁移步骤之一就是完整重新索引。
shelldocker run \ -e MIGRATE_TO_NOTEDB_OFFLINE=true \ -v ~/gerrit_volume:/var/gerrit/review_site \ -p 8080:8080 \ -p 29418:29418 \ -d openfrontier/gerrit
也可通过NOTEDB_CHANGES_AUTOMIGRATE环境变量进行变更数据的在线迁移。
shelldocker run \ -e NOTEDB_CHANGES_AUTOMIGRATE=true \ -v ~/gerrit_volume:/var/gerrit/review_site \ -p 8080:8080 \ -p 29418:29418 \ -d openfrontier/gerrit
此功能仅在Gerrit 2.15及以上版本可用。
shelldocker run -d -p 8080:8080 -p 29418:29418 openfrontier/gerrit
shelldocker run -d -p 8080:8080 -p 29418:29418 -e AUTH_TYPE=HTTP openfrontier/gerrit
shelldocker run --name gerrit_volume openfrontier/gerrit echo "Gerrit volume container."
shelldocker run -d --volumes-from gerrit_volume -p 8080:8080 -p 29418:29418 openfrontier/gerrit
请勿使用主机卷(特别是主目录下的目录,如~/gerrit)作为Gerrit卷!请使用命名卷替代!
shelldocker volume create gerrit_volume
shelldocker run -d -v gerrit_volume:/var/gerrit/review_site -p 8080:8080 -p 29418:29418 openfrontier/gerrit
调用gerrit init --batch时,可通过--install-plugin=<plugin_name>列出要安装的插件。这可通过GERRIT_INIT_ARGS环境变量实现。更多信息参见Gerrit文档。
shell# 启动时安装download-commands插件 docker run -d -p 8080:8080 -p 29418:29418 -e GERRIT_INIT_ARGS='--install-plugin=download-commands' openfrontier/gerrit
与https://hub.docker.com/_/postgres/%E9%95%9C%E5%83%8F%E7%B1%BB%E4%BC%BC%EF%BC%8C%E5%A6%82%E9%9C%80%E5%9C%A8%E8%84%9A%E6%9C%AC%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B%E4%B8%AD%E8%BF%9B%E8%A1%8C%E9%A2%9D%E5%A4%96%E9%85%8D%E7%BD%AE%EF%BC%8C%E5%8F%AF%E5%9C%A8%60/docker-entrypoint-init.d%60%E7%9B%AE%E5%BD%95%E4%B8%8B%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%B8%AA%E6%88%96%E5%A4%9A%E4%B8%AA%60*.sh%60%E6%88%96%60*.nohup%60%E8%84%9A%E6%9C%AC%E3%80%82%E8%AF%A5%E7%9B%AE%E5%BD%95%E9%BB%98%E8%AE%A4%E5%B7%B2%E5%88%9B%E5%BB%BA%E3%80%82%60/docker-entrypoint-init.d%60%E4%B8%AD%E7%9A%84%E8%84%9A%E6%9C%AC%E5%9C%A8Gerrit%E5%88%9D%E5%A7%8B%E5%8C%96%E5%90%8E%E3%80%81%E4%BB%BB%E4%BD%95Gerrit%E9%85%8D%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E5%89%8D%E8%BF%90%E8%A1%8C%EF%BC%8C%E5%85%81%E8%AE%B8%E9%80%9A%E8%BF%87%E7%BC%96%E7%A8%8B%E6%96%B9%E5%BC%8F%E8%A6%86%E7%9B%96%E5%85%A5%E5%8F%A3%E7%82%B9%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E3%80%82%60*.nohup%60%E8%84%9A%E6%9C%AC%E4%BC%9A%E9%80%9A%E8%BF%87nohup%E5%91%BD%E4%BB%A4%E5%9C%A8%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%E3%80%82
也可通过简单的Dockerfile扩展镜像。以下示例将添加一些脚本用于容器启动时初始化:
dockerfileFROM openfrontier/gerrit:latest COPY gerrit-create-user.sh /docker-entrypoint-init.d/gerrit-create-user.sh COPY gerrit-upload-ssh-key.sh /docker-entrypoint-init.d/gerrit-upload-ssh-key.sh COPY gerrit-init.nohup /docker-entrypoint-init.d/gerrit-init.nohup RUN chmod +x /docker-entrypoint-init.d/*.sh /docker-entrypoint-init.d/*.nohup
支持gerrit.config database部分中的所有属性。
支持gerrit.config ldap部分中的所有属性。
shell# 启动Gerrit容器连接到已存在的PostgreSQL docker run \ --name gerrit \ -p 8080:8080 \ -p 29418:29418 \ -e WEBURL=http://your.site.domain:8080 \ -e DATABASE_TYPE=postgresql \ -e DATABASE_HOSTNAME=postgres.hostname \ -e DATABASE_PORT=5432 \ -e DATABASE_DATABASE=reviewdb \ -e DATABASE_USERNAME=gerrit2 \ -e DATABASE_PASSWORD=gerrit \ -e AUTH_TYPE=LDAP \ -e LDAP_SERVER=ldap://ldap.server.address \ -e LDAP_ACCOUNTBASE=<ldap-basedn> \ -d openfrontier/gerrit
注意:docker --link已弃用,此方式可能在未来版本中不再支持。
shell# 启动PostgreSQL容器 docker run \ --name pg-gerrit \ -p 5432:5432 \ -e POSTGRES_USER=gerrit2 \ -e POSTGRES_PASSWORD=gerrit \ -e POSTGRES_DB=reviewdb \ -d postgres # 启动Gerrit容器(也支持AUTH_TYPE=HTTP_LDAP) docker run \ --name gerrit \ --link pg-gerrit:db \ -p 8080:8080 \ -p 29418:29418 \ -e WEBURL=http://your.site.domain:8080 \ -e DATABASE_TYPE=postgresql \ -e AUTH_TYPE=LDAP \ -e LDAP_SERVER=ldap://ldap.server.address \ -e LDAP_ACCOUNTBASE=<ldap-basedn> \ -d openfrontier/gerrit
支持gerrit.config sendmail部分中的一些基本属性。
shell# 启动支持sendemail的Gerrit容器 # 所有SMTP_*属性均为可选 # 如未指定SMTP_SERVER,sendemail功能将被禁用 docker run \ --name gerrit \ -p 8080:8080 \ -p 29418:29418 \ -e WEBURL=http://your.site.domain:8080 \ -e SMTP_SERVER=smtp.server.address \ -e SMTP_SERVER_PORT=25 \ -e SMTP_ENCRYPTION=tls \ -e SMTP_USER=<smtp user> \ -e SMTP_PASS=<smtp password> \ -e SMTP_CONNECT_TIMEOUT=10sec \ -e SMTP_FROM=USER \ -d openfrontier/gerrit
支持gerrit.config user部分中的所有属性。
shell# 启动带用户信息的Gerrit容器 # 所有USER_*属性均为可选 docker run \ --name gerrit \ -p 8080:8080 \ -p 29418:29418 \ -e WEBURL=http://your.site.domain:8080 \ -e USER_NAME=gerrit \ -e USER_EMAIL=gerrit@your.site.domain \ -d openfrontier/gerrit
shelldocker run \ --name gerrit \ -p 8080:8080 \ -p 29418:29418 \ -e AUTH_TYPE=OAUTH \ # 不要忘记设置Gerrit FQDN以确保OAuth正常工作 -e WEBURL=http://my-gerrit.example.com \ -e OAUTH_ALLOW_EDIT_FULL_NAME=true \ -e OAUTH_ALLOW_REGISTER_NEW_EMAIL=true \ # Google OAuth -e OAUTH_GOOGLE_RESTRICT_DOMAIN=your.site.domain \ -e OAUTH_GOOGLE_CLIENT_ID=1234567890 \ -e OAUTH_GOOGLE_CLIENT_SECRET=dakjhsknksbvskewu-googlesecret \ -e OAUTH_GOOGLE_LINK_OPENID=true \ # Github OAuth -e OAUTH_GITHUB_CLIENT_ID=abcdefg \ -e OAUTH_GITHUB_CLIENT_SECRET=secret123 \ # GitLab OAuth # 如何获取密钥:https://docs.gitlab.com/ee/integration/oauth_provider.html -e OAUTH_GITLAB_ROOT_URL=http://my-gitlab.example.com/ \ -e OAUTH_GITLAB_CLIENT_ID=abcdefg \ -e OAUTH_GITLAB_CLIENT_SECRET=secret123 \ # Bitbucket OAuth -e OAUTH_BITBUCKET_CLIENT_ID=abcdefg \ -e OAUTH_BITBUCKET_CLIENT_SECRET=secret123 \ -e OAUTH_BITBUCKET_FIX_LEGACY_USER_ID=true \ -d openfrontier/gerrit
shelldocker run \ --name gerrit \ -p 8080:8080 \ -p 29418:29418 \ -e WEBURL=http://my-gerrit.example.com \ -e DOWNLOAD_SCHEMES="http ssh" \ -e GERRIT_INIT_ARGS="--install-plugin=replication" \ -e REPLICATION_REMOTES="bitbucket github" \ -e REPLICATE_ON_STARTUP=true \ -e REPLICATION_MAX_RETRIES=3 \ -e BITBUCKET_URL=https://bitbucket.org/${BB_ORG}/${name}.git \ -e BITBUCKET_PROJECTS="demo* prod*" \ -e BITBUCKET_USERNAME=${BB_USER} \ -e BITBUCKET_PASSWORD=${BB_PASSWORD} \ -e BITBUCKET_MIRROR=true \ -e BITBUCKET_TIMEOUT=60 \ -e BITBUCKET_THREADS=2 \ -e BITBUCKET_RESCHEDULE_DELAY=15 \ -e BITBUCKET_REPLICATION_DELAY=15 \ -e BITBUCKET_REPLICATION_RETRY=1 \ -e BITBUCKET_REPLICATION_MAX_RETRIES=5 \ -e BITBUCKET_REPLICATE_PERMISSIONS=false \ -e BITBUCKET_CREATE_MISSING_REPOSITORIES=false \ -e GITHUB_URL=https://${GH_USER}@github.com/${GH_ORG}/${name}.git \ -e GITHUB_PASSWORD=${GH_PASSWORD} \ -d openfrontier/gerrit
shelldocker run \ --name gerrit \ -p 8080:8080 \ -p 29418:29418 \ -e GITWEB_TYPE=gitiles \ -d openfrontier/gerrit
shelldocker run \ --name gerrit \ -p 8080:8080 \ -p 29418:29418 \ -e DOWNLOAD_SCHEMES=http ssh \ -d openfrontier/gerrit
请勿使用。 仅用于开发环境。当配置此认证方式时,页面右上角会出现标题为“Become”的超链接,用户可通过该链接进入表单,输入任何现有用户的用户名,无需认证即可立即登录该账户。此认证方式仅对GWT托管模式shell有用,在该模式下,OpenID认证重定向可能对开发者的主机有风险,且无法使用HTTP认证。
shelldocker run \ --name gerrit \ -p 8080:8080 \ -p 29418:29418 \ -e AUTH_TYPE=DEVELOPMENT_BECOME_ANY_ACCOUNT \ -d openfrontier/gerrit
Gerrit通过其初始化脚本的daemon操作启动,该操作启动服务器而不fork,并将错误日志消息发送到控制台。另一种方式是使用supervise启动Gerrit,与daemon非常相似,不同之处在于错误日志消息会持久化到${GERRIT_SITE}/logs/error_log。
可通过GERRIT_START_ACTION环境变量使用非默认操作启动Gerrit。例如,使用supervise启动Gerrit:
shelldocker run \ -e GERRIT_START_ACTION=supervise \ -v ~/gerrit_volume:/var/gerrit/review_site \ -p 8080:8080 \ -p 29418:29418 \ -d openfrontier/gerrit
注意: 并非所有初始化操作都适合在Docker容器中启动Gerrit。特别是,使用start调用Gerrit会在返回前fork服务器,这将导致容器在不久后退出。
展示如何扩展此Gerrit镜像以与Jenkins集成的示例位于https://hub.docker.com/r/openfrontier/gerrit-ci/%E3%80%82
可从https://hub.docker.com/r/openfrontier/jenkins/%E6%8B%89%E5%8F%96%E5%8C%85%E5%90%AB%E4%B8%8EGerrit%E9%95%9C%E5%83%8F%E9%9B%86%E6%88%90%E7%9A%84%E7%A4%BA%E4%BE%8B%E8%84%9A%E6%9C%AC%E7%9A%84Jenkins%E9%95%9C%E5%83%8F%E3%80%82
https://github.com/openfrontier/ci%E6%8F%90%E4%BE%9B%E4%BA%86%E4%BD%BF%E7%94%A8%E6%AD%A4%E9%95%9C%E5%83%8F%E7%9A%84%E7%A4%BA%E4%BE%8B%E8%84%9A%E6%9C%AC%EF%BC%8C%E4%BB%A5%E5%8F%8A%E4%B8%80%E4%B8%AAhttps://hub.docker.com/r/openfrontier/jenkins/%EF%BC%8C%E7%94%A8%E4%BA%8E%E5%88%9B%E5%BB%BAGerrit-Jenkins%E9%9B%86%E6%88%90%E7%8E%AF%E5%A2%83%E3%80%82%E8%BF%98%E6%9C%89%E4%B8%80%E4%B8%AAhttps://github.com/openfrontier/ci-compose%EF%BC%8C%E6%BC%94%E7%A4%BA%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8docker compose实现相同功能。
shelldocker run -d -p 8080:8080 -p 29418:29418 -v /etc/localtime:/etc/localtime:ro
以下是 openfrontier/gerrit 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



来自真实用户的反馈,见证轩辕镜像的优质服务