Docker容器请求返回错误:读取ECONNRESET

时间:2020-10-07 11:39:11

标签: docker docker-compose micronaut

我正在使用docker-compose启动两个容器:一个带有micronaut服务的容器,另一个带有postgres的容器。

这是我的docker-compose.yml

version: "3.8"

services:
  web:
    image: "time"
    container_name: "time"
    build:
      context: .
      network: bridge
    ports:
      - "8081:8080"
    depends_on:
      - db
    links:
      - "db"
    environment:
      - PGHOST=db
      - PGDATABASE=postgres
      - PGUSER=postgres

  db:
    image: "postgres"
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: time

但是当我尝试向我的一个端点发送请求时,什么都没有发生,直到最终出现错误:读取ECONNRESET

当然,当我在docker之外的PC上运行我的应用程序时,我可以很好地发送请求。我的设置有什么问题吗?

这另一种设置工作正常,但我想知道如何像我的第一个docker-compose中那样使两个容器连接,并能够从主机访问它们。

version: "3.8"

services:
  web:
    image: "time"
    container_name: "time"
    build: .
    depends_on:
      - db
    environment:
      - PGHOST=db
      - PGDATABASE=postgres
      - PGUSER=postgres
    network_mode: host

  db:
    image: "postgres"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: time
    network_mode: host

1 个答案:

答案 0 :(得分:0)

我终于明白了!

version: "3.8"

services:
  web:
    image: "time"
    container_name: "time"
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
    links:
      - "db"
    environment:
      - PGHOST=db
      - PGDATABASE=postgres
      - PGUSER=postgres
    network_mode: bridge

  db:
    image: "postgres"
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: time
    network_mode: bridge
相关问题