workerman 5.2.3 在 alpine 容器中需通过 composer 引入,依赖 pcntl 和 posix 扩展,须用 apk 安装构建工具后通过 pecl 编译启用,并推荐使用 php:8.2-cli-alpine 镜像以确保兼容性与安全性。

Workerman 本身是纯 PHP 实现的库,不需“安装”二进制程序,而是在 Alpine 容器中通过 Composer 引入依赖,并确保运行环境具备必需的 PHP 扩展(主要是 pcntl 和 posix)。Workerman 5.2.3 是一个稳定版本,兼容 PHP 7.4–8.3,Alpine 环境下需特别注意扩展编译方式。
确认基础镜像与 PHP 版本
推荐使用官方 PHP Alpine 镜像,例如 php:8.2-cli-alpine(截至 2026 年,8.2 是长期支持版本,兼容性好、漏洞修复及时):
- 避免用太旧的 PHP(如 7.4),Workerman 5.2.3 已不再测试低版本兼容性
- 不要用
php:alpine这类无版本标签的镜像,会导致构建不可控 - Alpine 默认使用 musl libc,部分扩展需通过
pecl+apk工具链配合安装
安装 pcntl 和 posix 扩展
这两个扩展是 Workerman 多进程模型的底层依赖,在 Alpine 中不能直接用 docker-php-ext-install(该命令在 Alpine 的 CLI 镜像中默认不包含构建工具),必须显式安装构建依赖并编译:
- 先安装构建所需工具:
apk add --no-cache $PHPIZE_DEPS - 再逐个安装扩展:
pecl install pcntl && docker-php-ext-enable pcntl pecl install posix && docker-php-ext-enable posix- 安装完成后建议清理构建依赖:
apk del $PHPIZE_DEPS,减小镜像体积
引入 Workerman 5.2.3 代码
有两种主流方式,推荐第一种:
-
Composer 方式(推荐):在项目根目录
composer.json中明确指定版本:"workerman/workerman": "5.2.3",然后运行composer install --no-dev --optimize-autoloader -
手动下载方式:从 GitHub Release 页面获取源码包(v5.2.3 tag),解压后复制
src/到项目目录,通过require加载,适合离线或强审计场景 - 注意:不要混用
composer require workerman/workerman不带版本号,可能拉取到 5.3.x 或更高版,破坏兼容性
验证是否就绪
可在容器启动前加简单检查脚本,例如在 Dockerfile 末尾添加:
RUN php -m | grep -E "^(pcntl|posix)$" &&
php -r "require 'vendor/autoload.php'; echo class_exists('Workerman\Worker') ? 'OK' : 'FAIL';"
若输出 OK,说明扩展加载成功且 Workerman 类可正常解析。











