我是Docker的新手,刚刚迈出了第一步。 我想与docker玩一点,并且是为yii配置Dockerfile:
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
EXPOSE 8080
RUN composer create-project --prefer-dist yiisoft/yii2-app-basic test
然后我用:
运行容器docker container run -d --name test -p 8080:8080 test-yii
当我去localhost:8080
时,我得到ERR_EMPTY_RESPONSE
。
这是docker container inspect
:
"Ports": {
"80/tcp": null,
"8080/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "8080"
}
]
},
我感谢每一个帮助我解决这个问题的提示!
编辑:我忘了提到我连接到容器,然后运行php yii serve
来测试Yii是否运行,这会导致上述问题。
答案 0 :(得分:2)
YII
。那是因为它没有在Dockerfile
中定义。只有apache
从那里开始,因为它来自图片php:7.2.3-apache
。
正确的Dockerfile
是:
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
EXPOSE 8080
RUN composer create-project --prefer-dist yiisoft/yii2-app-basic test
CMD test/yii serve 0.0.0.0
现在,CMD
图层yii
与CMD
图片中的php:7.2.3-apache
图层重叠。
如果您想在容器内启动yii
和apache
,请查看these pieces of advice。
更新问题中的修改部分:
您需要运行php yii serve 0.0.0.0
。否则yii
绑定到localhost:8080
并且只能在容器内访问