我有一个 docker-compose yml 文件,如下所示
version: '2'
services:
nodejs:
build:
context: .
dockerfile: DockerFile
ports:
- "4000:4000"
links:
- redis
expose:
- "6379"
redis:
build:
context: .
dockerfile: Dockerfile-redis
我的目标是将nodejs-127.0.0.1端口6379转发到redis主机。我已经可以从 nodejs 机器 ping redis,但是端口没有映射。尝试公开选项,但也没有机会。
原文由 z.a. 发布,翻译遵循 CC BY-SA 4.0 许可协议
需要指出的是,上述所有解决方案都将端口映射到您机器上的每个接口,这一点很重要。如果您有一个公共 IP 地址,或者您的机器在大型网络上有一个 IP,这不太理想。您的应用程序可能会比您希望的更广泛的受众。
127.0.0.1
是映射到您机器上的主机名localhost
的 IP 地址。因此,现在您的应用程序仅通过该接口公开,并且由于127.0.0.1
只能通过您的机器访问,因此您不会将容器暴露给整个世界。该文档进一步解释了这一点,可以在这里找到: https ://docs.docker.com/compose/compose-file/#ports
注意:如果您使用 Docker for mac,这将使容器在 Docker for Mac VM 上的 127.0.0.1 上侦听,并且无法从您的本地主机访问。如果我没记错的话。