我在 Windows 上运行 Docker(不是 native 版本。即通过 docker-machine
在 VM 上运行的版本)。
目前我有这样的访问网站:
192.168.99.100:8080 for website 1
192.168.99.100:8081 for website 2
192.168.99.100:8082 for website 3
出于显而易见的原因,这是一个真正的痛苦。
我希望能够像以前使用 Apache 虚拟主机那样做,我在其中修改了
hosts
文件,然后可以输入类似:website1.dev
.如何为 Docker 容器执行此操作?
我的第一个解决方案是简单地将以下内容附加到我的 Windows 机器上的主机文件中,如下所示:
192.168.99.100 docker.dev
然而
docker.dev
只会转发到192.168.99.100:80
(即网站 1),因为您不能在主机文件中放置端口。
最佳答案
192.168.99.100 是 docker 机器的 IP:要为该 IP 分配名称,您需要修改 Windows hosts file你自己。
并且假设 docker 机器 VM 的 IP 已修复:请参阅 my script at this answer .
要真正重定向到 VM 中正确的 Apache 服务器,您需要另一个容器,它将:
http://website1.dev => redirect to port 8080
http://website2.dev => redirect to port 8081
http://website3.dev => redirect to port 8082
(与
website1.dev
, website2.dev
和 website3.dev
都添加到 Windows 主机文件中,具有相同的 url 192.168.99.100)例如,检查 traefik
如其他容器所见,这与容器的主机名不同。
docker-compose
extra-host
确实相当于 docker run --add-host
但是一个docker-compose can use
hostname:
directly将主机名固定到容器。这应该足以通过名称引用每个容器。
关于docker - 如何为 Docker 容器分配主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799241/