有某些功能,例如不带https的JavaScript服务工作者,仅可在localhost上运行,但是当我使用在docker- machine上运行的docker-compose在docker容器内运行我的应用程序时,我需要使用我从那里得到的地址
docker-machine ip default
有没有办法映射localhost到该IP?
localhost
您可以向前添加VirtualBox端口,以将Docker主机上的端口映射到本地计算机。
假设您的docker机器被称为“默认”,并且您要将容器中的端口80映射到localhost:8888,则可以运行:
vboxmanage modifyvm default --natpf1 "nameformapping,tcp,,8888,,80"
或VM是否正在运行
vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80"
也可以在VM设置的VirtualBox UI中完成此操作。这是VirtualBox的文档https://www.virtualbox.org/manual/ch06.html#network_nat
您还需要将容器上的端口映射到docker计算机上的端口,然后在启动容器时执行此操作(这也假设您在Dockerfile中有一个“ EXPOSE 80”命令)
docker run -p 80:80 mycontainer
https://docs.docker.com/engine/reference/run/
另请参阅:https : //github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md