docker compose连接到其他容器失败
我有两个docker映像,一个rest服务器(docker compose连接到其他容器失败,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我有两个docker映像,一个rest服务器(flaskapp)和另一个web服务器(web)。我正在尝试使用docker compose运行它们 但是,web容器似乎无法联系rest容器 以下是我的docker compose.yml文件: version: '3' services: flaskapp: build: ./rest_server restart: always networks: - docker_network expose:
flaskapp
)和另一个web服务器(web
)。我正在尝试使用docker compose
运行它们
但是,web容器似乎无法联系rest容器
以下是我的docker compose.yml
文件:
version: '3'
services:
flaskapp:
build: ./rest_server
restart: always
networks:
- docker_network
expose:
- 5001
web:
build: ./web
restart: always
ports:
- 3002:3000
depends_on:
- flaskapp
networks:
- docker_network
healthcheck:
test: ["CMD", "curl", "-f", "http://flaskapp:5001/todos"]
networks:
docker_network:
driver: bridge
我的web应用程序引用以下URL:
但是,如果我使用docker exec-it/bin/bash
登录到docker容器并运行以下命令,我将得到预期的json响应
卷曲
我也可以公开我的rest服务器端口,然后在web服务器中将rest服务器地址更改为localhost,这将解决问题,但这不是我想要的
我不想向主机公开我的rest服务器 只需添加:
expose:
- "5001"
到烧瓶部分
这不会将端口5001公开给主机,这只是将端口5001公开给同一网络中的所有容器,这是您想要的 您需要:
flaskapp
容器的端口5001
version: '3'
services:
flaskapp:
build: ./rest_server
expose:
- 5001
networks:
- docker_network
web:
build: ./web
restart: always
ports:
- 3002:3000
networks:
- docker_network
depends_on:
- flaskapp
networks:
docker_network:
driver: bridge
同样的结果,我可以从web容器中访问rest服务器。但是,当rest服务器发送请求时,它会失败。这很奇怪。听起来好像和你的网络容器有关。容器环境设置正确。我想下一步是看看web容器是否接受CORS请求。因为它们基本上居住在两个地方。我仍然得到相同的结果。我定义了网络<代码>网络:docker\u网络:driver:bridge不,我没有任何错误消息,状态为Healthy您可以解释一下您所说的“web容器无法联系rest容器”的意思吗。您有什么错误?如果您使用5433:5432,它将不会暴露5433端口,并且您将得到拒绝连接。一旦您将其更改为“5433:5432”,它就会工作。与官方博士后测试:13.2图像(以及13)。