Docker PHP+Apache环境中Composer运行容器选择及服务异常排查
PHP容器未运行排查与Composer执行容器选择
一、解决"service 'php' is not running"问题
检查容器状态
执行docker-compose ps查看所有服务状态,确认php容器是否处于Up状态。如果是Exit或Restarting,说明容器启动失败。排查启动失败原因
执行docker-compose logs php查看php容器的启动日志,常见问题包括:- Dockerfile构建时扩展安装失败(如mongodb扩展编译错误)
- 本地挂载目录权限不足,容器内用户无法访问
- 9000端口被宿主机其他进程占用
重新构建启动php服务
执行docker-compose up -d --build php,强制重新构建镜像并启动容器,观察控制台输出的错误信息定位问题。修正配置路径冲突
你修改后的docker-compose.yml中,apache容器挂载./src:/usr/local/apache2/htdocs,但php容器挂载./:/usr/local/apache2/htdocs,两者路径不一致会导致Apache代理php时找不到文件。建议统一挂载路径:
将php容器的volumes改为:volumes: - ./src:/usr/local/apache2/htdocs - ./src:/var/www保持working_dir与容器内项目目录一致,确保Apache代理路径和php容器内文件路径匹配。
二、运行Composer的正确容器选择
不需要单独创建Composer容器,直接使用已配置的php容器即可,理由如下:
- 你的PHP Dockerfile已经通过
COPY --from=composer /usr/bin/composer /usr/bin/composer安装了Composer - Composer依赖PHP环境,php容器包含项目所需的PHP版本、扩展(pdo、mongodb等),能避免环境不一致导致的依赖安装问题
执行Composer命令的方式
- 宿主机直接执行:
docker-compose exec php composer install - 进入php容器后执行:
docker-compose exec php bash # 进入容器后默认在/var/www目录(对应本地./src),直接执行 composer install
内容的提问来源于stack exchange,提问作者Néo
相关产品推荐
相关产品推荐

