There are certain features, like JavaScript service workers without https, that only work on localhost, but when I run my app inside a docker container, using docker-compose, which runs on top of docker-machine, I need to connect to it using the address I get from
reading.blob = json.loads(blob_json)
Is there a way to map docker-machine ip default
to that ip?
答案 0 :(得分:28)
您可以向前添加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
答案 1 :(得分:14)
编辑hosts
文件会导致本地计算机仅直接查找为域指定的IP地址。因此,您可以将docker-machine
的IP地址添加到本地计算机中的etc\hosts
文件,并将容器上的端口80
映射到80
上的端口docker-machine
{1}}。
示例:
1)获取docker主机ip地址
$ docker-machine ip default
192.168.99.100
2)将此行添加到本地计算机中的etc/hosts
文件
192.168.99.100 domain.com
3)检查您的计算机是否正在解析域。
$ ping domain.com
PING domain.com (192.168.99.100): 56 data bytes
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.294 ms
64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.99.100: icmp_seq=2 ttl=64 time=0.556 ms
64 bytes from 192.168.99.100: icmp_seq=3 ttl=64 time=0.270 ms
注意:
C:\Windows\System32\Drivers\etc\hosts
答案 2 :(得分:5)