Docker容器无法通讯

时间:2018-07-05 11:58:01

标签: docker networking docker-compose

我有一个包含两个服务的docker-compose文件,一个服务称为运行HTTP服务器的模块,另一个服务称为仪表板,该仪表板运行使用服务器上API端点的前端接口。这就是docker-compose文件的样子:

CreateProcess

有时,仪表板应该向模块发送请求,因此我正在发送GET请求(在节点中)。我尝试了许多不同的URL,但似乎没有一个得到响应。我尝试过:

  • version: '3' services: module: build: . ports: - "5000:5000" volumes: - "./logs:/logs" web: build: ./dashboard ports: - "3000:3000"
  • http://localhost: 5000
  • http://module:5000

这些似乎都不起作用。难道我做错了什么?请求应发送到哪个URL?例如,由于存在chrome安全问题,它们无法正常工作吗?

2 个答案:

答案 0 :(得分:0)

我会建议一些事情,让我知道哪一个适合您。

1。在公开端口号5000(用于前端和后端)时,您应该能够简单地使用IP地址进行通信。

2。如果您决定不将端口号公开为安全隐患,则需要在docker-compose文件中将两个容器彼此链接,然后使用容器名称进行通信。

version: '3'
 services:
  module:
   build: .
   ports: 
    - "5000:5000"
   links:
    - module:web
   volumes:
    - "./logs:/logs"
  web:
   build: ./dashboard
  links:
    - web:module
   ports: 
    - "3000:3000"

在您的Web docker容器中,您应该能够使用 http://module:5000

访问后端

注意-模块仅在docker容器内部有效,如果要在外部访问,则使用主机IP地址。

让我知道您是否需要任何帮助?

答案 1 :(得分:-1)

您需要EXPOSE模块上的端口。这将告诉它从Docker内部进行侦听(端口来自外部,例如来自您的浏览器)

module:
 build: .
 expose: 
  - "5000"
...etc
相关问题