服务访问127.0.0.1上的另一项服务?

By simon at 2018-02-07 • 0人收藏 • 27人看过

我想我的Web Docker容器从内部访问127.0.0.1:6379上的Redis Web容器。我已经安装了Docker Compose f如下所示。我明白了 ECONNREFUSED虽然:

version: "3"

services:
  web:
    build: .
    ports:
      - 8080:8080
    command: ["test"]
    links:
      - redis:127.0.0.1
  redis:
    image: redis:alpine
    ports: 
      - 6379
有任何想法吗?

2 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

简短的回答是“不要”。码头集装箱各得到自己的 环回接口127.0.0.1,与t分开他主持回环和 从其他容器。你不能重新定义127.0.0.1,如果可以的话, 那几乎肯定会打破其他的事情。


有一个技术上可行的方法,通过运行所有的容器 直接在主机上,无线日:

network_mode: "host"
但是,这将删除您需要的docker网络隔离 容器。 你也可以附上一个骗局对另一个容器的网络(所以他们 具有相同的回送接口):
docker run --net container:$container_id ...
但是我不确定重新是一个语法来做到这一点在docker-compose而不是 可用于群集模式,因为容器可以在不同的节点上运行。米艾因 使用我以前的语法是附加网络调试工具 [nicolaka / netshoot](https://github.com/nicolaka/netshoot)。


你应该做的是使redis数据库的位置 配置参数到您的webapp容器河通过位置在一个 环境变量,配置文件或命令行参数。如果Web应用程序 不能支持这个迪直接地,用入口点更新配置 在启动您的Web应用程序之前运行的脚本。这会改变你的组合SE yml文件看起来像:

version: "3"

services:
  web:
    # you should include an image name
    image: your_webapp_image_name
    build: .
    ports:
      - 8080:8080
    command: ["test"]
    environment:
      - REDIS_URL=redis:6379

    # no need to link, it's deprecated, use dns and the network docker creates
    #links:
    #  - redis:127.0.0.1
  redis:
    image: redis:alpine
    # no need to publish the port if you don't need external access
    #ports: 
    #  - 6379

2018-02-07   #2

简短的回答是“不要”。码头集装箱各得到自己的 环回接口127.0.0.1,与t分开他主持回环和 从其他容器。你不能重新定义127.0.0.1,如果可以的话, 那几乎肯定会打破其他的事情。


有一个技术上可行的方法,通过运行所有的容器 直接在主机上,无线日:

network_mode: "host"
但是,这将删除您需要的docker网络隔离 容器。 你也可以附上一个骗局对另一个容器的网络(所以他们 具有相同的回送接口):
docker run --net container:$container_id ...
但是我不确定重新是一个语法来做到这一点在docker-compose而不是 可用于群集模式,因为容器可以在不同的节点上运行。米艾因 使用我以前的语法是附加网络调试工具 [nicolaka / netshoot](https://github.com/nicolaka/netshoot)。


你应该做的是使redis数据库的位置 配置参数到您的webapp容器河通过位置在一个 环境变量,配置文件或命令行参数。如果Web应用程序 不能支持这个迪直接地,用入口点更新配置 在启动您的Web应用程序之前运行的脚本。这会改变你的组合SE yml文件看起来像:

version: "3"

services:
  web:
    # you should include an image name
    image: your_webapp_image_name
    build: .
    ports:
      - 8080:8080
    command: ["test"]
    environment:
      - REDIS_URL=redis:6379

    # no need to link, it's deprecated, use dns and the network docker creates
    #links:
    #  - redis:127.0.0.1
  redis:
    image: redis:alpine
    # no need to publish the port if you don't need external access
    #ports: 
    #  - 6379

登录后方可回帖

Loading...