You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署PHP Apache服务时容器以代码0退出的问题排查

问题分析与解决方案

核心问题

  1. 镜像选择错误:你使用的php:8.2-cli是仅包含PHP命令行环境的镜像,没有预装Apache服务,所以apache2-foreground命令根本不存在。
  2. Command语法错误:你的command配置把多个命令用&&拆分在bash -c外面,导致Docker只会执行第一个/bin/bash -c "apt-get update",执行完成后容器直接退出(返回码0表示执行成功),后面的apache2-foreground和tail -f /dev/null根本不会运行。

修正后的docker-compose.yml

version: '3'

services: 
  php-apache:
    image: php:8.2-apache
    ports:
      - '3000:80'
    volumes:
      - /Users/mac/Developer/laminas-sample-project:/var/www/html
      - /Users/mac/Developer/laminas-sample-project/scripts:/scripts
    # 如需执行自定义初始化脚本,将所有命令放在同一个bash -c的引号内
    command: /bin/bash -c "chmod +x /scripts/entrypoint.sh && /scripts/entrypoint.sh && apache2-foreground"

关键修改说明

  • 替换镜像:改用php:8.2-apache官方镜像,该镜像预装Apache服务,默认启动命令就是apache2-foreground,能保持容器持续运行。
  • 修复Command语法:将所有需要执行的命令放在同一个/bin/bash -c的引号内,确保命令按顺序执行,最后以apache2-foreground收尾(这个命令会前台持续运行,维持容器存活,无需额外添加tail -f /dev/null)。

额外提示

如果你的初始化脚本entrypoint.sh已包含启动Apache的逻辑,或者不需要自定义初始化,可直接去掉command配置,使用镜像的默认启动命令即可。

内容的提问来源于stack exchange,提问作者Avinash Dalvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 05:37:32