P4 Code Review Docker容器是Perforce Software提供的官方容器,用于在测试或生产环境中运行P4 Code Review(原Helix Swarm)。该容器为用户提供了便捷的部署方式,可快速搭建代码审查环境并与Helix Core Server集成。
P4 Code Review镜像可在Docker Hub获取,镜像名称为perforce/helix-swarm:
https://hub.docker.com/repository/docker/perforce/helix-swarm
以下标签的镜像可用:
版本化标签会在该版本有补丁发布时更新。latest标签始终指向最新版本的最新补丁。
1. 创建环境变量文件
首先,创建一个.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
2. 创建Docker网络
bashdocker network create helix
3. 启动Redis容器
bashdocker run -d --name helix-redis --network helix --network-alias helix-redis \ redis redis-server --protected-mode no --port 7379
4. 启动P4 Code Review容器
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
Docker目录
启动时,如果/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密钥和证书文件的位置。有以下选项:
Apache代理
如果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获取:
https://hub.docker.com/repository/docker/perforce/helix-swarm
以下标签的镜像可用:
版本化标签会在该版本有补丁发布时更新。latest标签始终指向最新版本的最新补丁。
1. 创建环境变量文件
首先,创建.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服务器作为缓存。
2. 创建Docker网络
bashdocker network create helix
3. 启动Redis容器
bashdocker run -d --name helix-redis --network helix --network-alias helix-redis \ redis redis-server --protected-mode no --port 7379
4. 启动P4 Code Review容器
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文件已存在,则
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务