基于Ubuntu构建PHP容器失败:OCI runtime报错php-fpm未找到路径求助
基于Ubuntu镜像部署WordPress容器时php-fpm启动失败问题解决
在基于Ubuntu 22.04镜像构建PHP容器用于WordPress部署时,启动容器出现以下错误:
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "php-fpm": executable file not found in $PATH: unknown
使用的配置文件
php.Dockerfile
FROM ubuntu:22.04 ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get install -y php && \ apt-get install -y php-mysql && \ rm -rf /var/lib/apt/lists/* WORKDIR /usr/sbin/ CMD ["php-fpm", "-F"]
docker-compose.yml
version: "3.9" services: nginx: image: nginx:1.25.3-alpine ports: - 80:80 volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - ./wordpress:/var/www/html depends_on: - php mysql: image: mysql:latest environment: MYSQL_DATABASE: wp MYSQL_USER: wp MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: secret php: build: context: . dockerfile: php.Dockerfile volumes: - ./wordpress:/var/www/html depends_on: - mysql
问题根源
Ubuntu官方源中,php包仅包含CLI版本的PHP,不包含php-fpm进程管理器,因此容器启动时找不到php-fpm可执行文件。
修正步骤
- 安装php-fpm包:在Dockerfile的
apt-get install命令中添加php-fpm(Ubuntu 22.04中对应php8.1-fpm,直接用php-fpm会自动安装对应版本)。 - 可选:指定php-fpm完整路径:如果安装后
php-fpm无法通过命令直接调用,可以使用完整路径(比如/usr/sbin/php-fpm8.1)作为启动命令。 - 移除不必要的WORKDIR设置:
WORKDIR /usr/sbin/不是必须的,php-fpm的执行不依赖工作目录。
修正后的Dockerfile
FROM ubuntu:22.04 ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get install -y php php-fpm php-mysql && \ rm -rf /var/lib/apt/lists/* # 可选:如果php-fpm命令无法直接调用,使用完整路径 # CMD ["/usr/sbin/php-fpm8.1", "-F"] CMD ["php-fpm", "-F"]
验证
重新构建PHP镜像并启动容器:
docker-compose build php docker-compose up -d
内容的提问来源于stack exchange,提问作者Karol
相关产品推荐
相关产品推荐

