Mac环境下Docker出现ERR_EMPTY_RESPONSE报错求助
解决Docker部署Yii2基础项目出现ERR_EMPTY_RESPONSE的问题
刚入门Docker和Yii的时候踩这种坑太正常了,我帮你拆解下问题到底出在哪,一步步来解决:
1. 端口映射不匹配是首要问题
你Dockerfile里写了EXPOSE 8080,但官方php:7.2.3-apache镜像里的Apache默认监听的是80端口,而你启动容器用的是-p 8080:8080——这相当于把主机的8080端口映射到容器里根本没有服务在运行的8080端口,浏览器自然拿不到响应。
最简单的解决方式是修改启动命令,把端口映射改成:
docker container run -d --name test -p 8080:80 test-yii
这样主机的8080端口就对应容器内Apache实际监听的80端口了。
2. Yii项目目录没放到Apache根目录
你用composer create-project把Yii项目创建在了容器的/test目录,但Apache默认的网站根目录是/var/www/html,也就是说Apache根本找不到你的Yii项目文件,这也是导致空响应的核心原因。
你需要修改Dockerfile,把创建好的Yii项目文件移到Apache的根目录下:
FROM php:7.2.3-apache RUN curl -sS https://getcomposer.org/installer | php && \ mv composer.phar /usr/local/bin/composer RUN apt-get update && apt-get install -y git unzip zip # 创建Yii项目到临时目录,再复制到Apache根目录 RUN composer create-project --prefer-dist yiisoft/yii2-app-basic /tmp/yii-test && \ cp -r /tmp/yii-test/* /var/www/html/ && \ rm -rf /tmp/yii-test # Apache默认监听80,这里EXPOSE对应80即可 EXPOSE 80
3. 补充Yii必需的PHP扩展(可选但关键)
Yii2基础项目依赖一些PHP扩展,比如pdo_mysql、mbstring,如果缺失的话后续运行可能会报错,建议在Dockerfile里添加安装扩展的步骤:
# 在apt-get install之后添加 RUN docker-php-ext-install pdo_mysql mbstring
最后重新构建并启动容器
- 重新构建镜像:
docker build -t test-yii .
- 用修正后的命令启动容器:
docker container run -d --name test -p 8080:80 test-yii
现在访问http://localhost:8080应该就能看到Yii的欢迎页面了。
如果还是有问题,可以通过容器日志排查具体错误:
docker logs test
看看Apache或者Yii有没有输出报错信息,方便进一步定位问题。
内容的提问来源于stack exchange,提问作者codelifter
相关产品推荐
相关产品推荐

