Docker 组合端口映射

新手上路,请多包涵

我有一个 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 许可协议

阅读 426
1 个回答

需要指出的是,上述所有解决方案都将端口映射到您机器上的每个接口,这一点很重要。如果您有一个公共 IP 地址,或者您的机器在大型网络上有一个 IP,这不太理想。您的应用程序可能会比您希望的更广泛的受众。

 redis:
  build:
    context:
    dockerfile: Dockerfile-redis
    ports:
    - "127.0.0.1:3901:3901"

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 上侦听,并且无法从您的本地主机访问。如果我没记错的话。

原文由 Breedly 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题