问题描述
我正在使用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
解决方法
我终于明白了!
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