
[英]My localhost doesn't see my html and php files from www on Windows 10 (wamp)
[英]PHP container can't see my app on localhost
我想在容器上运行PHP应用程序,当我进入localhost:5000时,要查看网站。 运行容器时,我看不到位于localhost:5000的网站,只能看到172.12.0.6:80的网站(我不知道这是什么ip)。
这是dockerfile:
FROM php:7.0-apache
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
COPY ./index.php /var/www/html/
EXPOSE 5000
这是index.php,如果您有兴趣的话(我知道它很复杂):
<html>
<title>website</title>
<body>
<?php
echo "hello world";
?>
</body>
</html>
这就是我构建和运行映像的方式:
$ sudo docker build -t website website/
$ sudo docker run -it --name website --network mynetwork website:latest
这是运行图像时的日志:
$ sudo docker run -it --name website --network mynetwork website:latest
[Mon Feb 25 16:08:05.912611 2019] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.0.33 configured -- resuming normal operations
[Mon Feb 25 16:08:05.912682 2019] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
您正在将容器连接到自定义网络mynetwork
。 因此,您需要显式公开端口80->5000
:
docker run -it --name website --network mynetwork -p 5000:80 website:latest
有了这个,你可以到达localhost:5000
容器
另一种选择-使用network=host
模式。 在这种模式下,您不需要(实际上也不能)暴露端口,但是却可以牺牲容器的隔离性,因为容器正在使用主机的网络。
docker run -it --name website --network=host website:latest
有了这个,你可以到达localhost:80
上的容器。 请注意,使用network=host
不能更改容器的原始端口。
EXPOSE 5000
语句仅用于提供信息, 实际上并不执行端口公开 :
EXPOSE指令实际上不会发布端口。 它充当构建映像的人与运行容器的人之间的一种文档类型,有关打算将哪些端口发布为容器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.