perforce/helix-swarmP4 Code Review Docker容器是Perforce Software提供的官方容器,用于在测试或生产环境中运行P4 Code Review(原Helix Swarm)。该容器为用户提供了便捷的部署方式,可快速搭建代码审查环境并与Helix Core Server集成。
P4 Code Review镜像可在Docker Hub获取,镜像名称为perforce/helix-swarm:
[***]
以下标签的镜像可用:
版本化标签会在该版本有补丁发布时更新。latest标签始终指向最新版本的最新补丁。
首先,创建一个.env文件,包含以下内容:
P4D_PORT=ssl:myperforce:1666 P4D_SUPER=super P4D_SUPER_PASSWD=HelixDockerBay94 SWARM_USER=swarm SWARM_PASSWD=HelixDockerBay94 SWARM_HOST=mymachine SWARM_REDIS=helix-redis SWARM_REDIS_PORT=7379 # 如果设置为'y',即使扩展已存在也会重新安装,覆盖现有配置 SWARM_FORCE_EXT=y
bashdocker network create helix
bashdocker run -d --name helix-redis --network helix --network-alias helix-redis \ redis redis-server --protected-mode no --port 7379
bashdocker run -d --name helix-swarm --network helix --network-alias helix-swarm \ --env-file .env -p 80:80 perforce/helix-swarm
以下环境变量可用于配置P4 Code Review Docker镜像。注意,如果已存在config.php文件,大多数这些选项将被忽略。
| 配置项 | 默认值 | 描述 |
|---|---|---|
| P4D_SUPER | super | 超级用户名 |
| P4D_SUPER_PASSWD | 无默认值 | 超级用户密码 |
| P4D_PORT | ssl:perforce:1666 | P4D服务器端口 |
| SWARM_USER | swarm | P4 Code Review用户名 |
| SWARM_PASSWD | 无默认值 | P4 Code Review用户密码 |
| SWARM_MAILHOST | localhost | 邮件服务器地址 |
| SWARM_HOST | helix-swarm | P4 Code Review服务器主机名 |
| SWARM_FORCE_EXT | n | 设置为'y'以覆盖扩展 |
| SWARM_REDIS | helix-redis | Redis服务器主机名 |
| SWARM_REDIS_PORT | 7379 | Redis服务器端口 |
| SWARM_REDIS_PASSWD | Redis服务器密码 | |
| SWARM_REDIS_NAMESPACE | Redis命名空间 |
完整的生产环境要求P4 Code Review和Redis数据能够在容器生命周期之外持久化。这可以通过启动Docker容器时使用绑定挂载来实现。
bash# 创建存储目录 mkdir -p storage/redis-data mkdir -p storage/swarm-data # 启动Redis容器(带数据持久化) docker run -d --name helix-redis --network helix --network-alias helix-redis \ -v $PWD/storage/redis-data:/data redis \ redis-server --protected-mode no --port 7379 --appendonly yes # 启动P4 Code Review容器(带数据持久化) docker run -d --name helix-swarm --network helix --network-alias helix-swarm \ -p 80:80 -v $PWD/storage/swarm-data:/opt/perforce/swarm/data \ --env-file .env perforce/helix-swarm
此配置将P4 Code Review配置和Redis缓存数据保留在容器外部。P4 Code Review日志文件、工作队列、令牌和工作区也将被保留。
当容器启动时,如果/opt/perforce/swarm/data/config.php文件已存在,则会跳过大部分配置步骤。这允许容器重启而不必每次都重新配置系统。
这使得.env文件不再需要。删除Docker容器后,可以使用以下命令重新创建并重启:
bashdocker run -d --name helix-swarm --network helix --network-alias helix-swarm \ -p 80:80 -v $PWD/storage/swarm-data:/opt/perforce/swarm/data \ perforce/helix-swarm
启动时,如果/opt/perforce/swarm/data/docker目录不存在,将创建该目录。Apache站点配置和几个不在数据目录中的P4 Code Review配置文件将复制到这里,然后从它们通常的位置链接到这里。这允许用户在容器外部修改这些文件,任何更改将在重启之间保留。
/etc/apache2/sites-available -> docker/sites-available [目录]/opt/perforce/etc/swarm-cron-hosts.conf -> docker/swarm-cron-hosts.conf/opt/perforce/swarm/public/custom -> docker/custom [目录]如果要将现有P4 Code Review服务器替换为Docker,可以重用现有的config.php配置文件。还可以配置P4 Code Review使用不同的Redis实例。
./storage目录data目录内容复制到./storage/swarm-dataconfig.php中的网络连接配置正确bashdocker network create helix mkdir -p storage/redis-data docker run -d --name helix-redis --network helix --network-alias helix-redis \ -v $PWD/storage/redis-data:/data redis \ redis-server --protected-mode no --port 7379 --appendonly yes mkdir -p storage/swarm-data # 将旧数据复制到storage/swarm-data目录 # cp -R /path/to/old/data/* storage/swarm-data/ docker run -d --name helix-swarm --network helix --network-alias helix-swarm \ -p 80:80 -v $PWD/storage/swarm-data:/opt/perforce/swarm/data \ perforce/helix-swarm
从同一台机器上的P4 Code Review安装迁移到Docker安装时,需要注意以下可能的问题:
默认情况下,Apache启用了三个模块:rewrite、ssl和remoteip。ssl模块仅在需要从容器内运行HTTPS时才需要。如果使用SSL,还需要放置SSL密钥和证书文件的位置。有以下选项:
如果Docker容器由另一个Web服务器作为前端,则可能会遇到Helix票据问题,除非它们是主机未锁定的。通常Apache会将客户端的IP地址转发给P4 Code Review。
如果P4 Code Review位于Web代理(如运行SSL的第二个Apache服务器)后面,则客户端的IP地址会丢失。在这种情况下,必须使用主机未锁定的票据(通过p4 login -ap获取)。
或者,可以使用remoteip模块允许容器Apache信任代理,从而启用客户端IP的转发。在perforce-swarm-site.conf中添加以下行:
RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 172.19.0.1/24
RemoteIPInternalProxy应该是容器看到的主机IP地址。
可以使用docker-compose.yml简化部署:
yamlversion: '3' networks: helix: driver: bridge services: redis: image: redis container_name: helix-redis networks: - helix command: redis-server --protected-mode no --port 7379 volumes: - ./storage/redis-data:/data restart: unless-stopped swarm: image: perforce/helix-swarm container_name: helix-swarm networks: - helix ports: - "80:80" volumes: - ./storage/swarm-data:/opt/perforce/swarm/data environment: - P4D_PORT=ssl:myperforce:1666 - P4D_SUPER=super - P4D_SUPER_PASSWD=HelixDockerBay94 - SWARM_USER=swarm - SWARM_PASSWD=HelixDockerBay94 - SWARM_HOST=mymachine - SWARM_REDIS=helix-redis - SWARM_REDIS_PORT=7379 - SWARM_FORCE_EXT=y depends_on: - redis restart: unless-stopped
使用以下命令启动:
bashdocker-compose up -d
有关升级P4 Code Review Docker容器的详细说明,请参阅官方文档: [***]
有一个Makefile用于抽象可以运行的一些命令。如果在具有适当构建工具的Linux系统上,这可能会很有用。
Makefile设置了一些默认参数,可以通过build.mk文件覆盖:
REPO := perforce IMAGE := helix-swarm-development TAG := DEV-BUILD ARGS := NAME := helix-swarm
@copyright 2025 Perforce Software. 保留所有权利。# P4 Code Review (原Helix Swarm) Docker容器
P4 Code Review Docker容器是Perforce Software提供的官方容器,用于在测试或生产环境中运行P4 Code Review(原Helix Swarm)。该容器为用户提供了便捷的部署方式,可快速搭建代码审查环境并与Helix Core Server集成。
P4 Code Review镜像可在Docker Hub获取:
[***]
以下标签的镜像可用:
版本化标签会在该版本有补丁发布时更新。latest标签始终指向最新版本的最新补丁。
首先,创建.env文件,包含以下内容:
P4D_PORT=ssl:myperforce:1666 P4D_SUPER=super P4D_SUPER_PASSWD=HelixDockerBay94 SWARM_USER=swarm SWARM_PASSWD=HelixDockerBay94 SWARM_HOST=mymachine SWARM_REDIS=helix-redis SWARM_REDIS_PORT=7379 # 如果设置为'y',即使扩展已存在也会重新安装,覆盖现有配置 SWARM_FORCE_EXT=y
P4D_PORT必须设置为P4D实例的端口,且必须能从docker镜像访问。P4D_SUPER和P4D_SUPER_PASSWD变量必须设置为P4D上的超级用户信息。
SWARM_USER如果不存在将被创建,SWARM_PASSWD必须正确设置,需要是管理员或超级用户。
SWARM_HOST必须是docker容器使用的主机名,且必须能从P4D服务器访问。重要:SWARM_HOST用于配置扩展,因此P4D必须能够使用此处给出的主机名回调。
SWARM_REDIS和SWARM_REDIS_PORT用于配置Swarm连接Redis服务器作为缓存。
bashdocker network create helix
bashdocker run -d --name helix-redis --network helix --network-alias helix-redis \ redis redis-server --protected-mode no --port 7379
bashdocker run -d --name helix-swarm --network helix --network-alias helix-swarm \ --env-file .env -p 80:80 perforce/helix-swarm
完整的生产环境要求P4 Code Review和Redis数据能够在容器生命周期之外持久化。这可以通过启动Docker容器时使用绑定挂载来实现。
bash# 创建存储目录 mkdir -p storage/redis-data mkdir -p storage/swarm-data # 启动Redis容器(带数据持久化) docker run -d --name helix-redis --network helix --network-alias helix-redis \ -v $PWD/storage/redis-data:/data redis \ redis-server --protected-mode no --port 7379 --appendonly yes # 启动P4 Code Review容器(带数据持久化) docker run -d --name helix-swarm --network helix --network-alias helix-swarm \ -p 80:80 -v $PWD/storage/swarm-data:/opt/perforce/swarm/data \ --env-file .env perforce/helix-swarm
此配置将P4 Code Review配置和Redis缓存数据保留在容器外部。P4 Code Review日志文件、工作队列、令牌和工作区也将被保留。
当容器启动时,如果/opt/perforce/swarm/data/config.php文件已存在,则




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务