P4 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文件已存在,则
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429