【发布时间】:2021-10-12 20:43:33
【问题描述】:
问题
ECS Fargate 容器之间如何通信?
情况
我使用 docker compose ecs 集成。
在 AWS docker 上下文中,docker compose up 进行了正确部署。
但是反向代理不能正常工作,可能是因为与容器通信。
我的docker-compose.yml
version: '3'
services:
nginx:
image: {ACCOUNT}.dkr.ecr.{REGION}.amazonaws.com/{MY_IMAGE}
ports:
- "80:80"
nodeapp:
image: {ACCOUNT}.dkr.ecr.{REGION}.amazonaws.com/{MY_REACT_IMAGE}
working_dir: /src
command: sh -c "yarn install && yarn build && yarn start"
ports:
- "3000:3000"
我的 nginx.conf
server {
listen 80;
server_name localhost;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:3000/;
# proxy_pass http://nodeapp:3000/; // works only for local
# proxy_pass http://nodeapp.{MY CLUSTER}.local:3000/; // doesn't work
}
}
我的理解
- 在同一个ECS服务中,容器之间可以通过localhost进行通信。
- 在不同的 ECS 服务中,容器之间可以通过服务发现进行通信。
这些是正确的吗?还有,我该怎么做?
1:同一个ECS服务
我一开始就尝试这样做。但是,docker compose up(ecs integration) 创建了不同的服务(对于 nginx 服务 和 application(react) 服务。我该如何配置呢?
2:不同的服务
在 nginx conf 中,proxy_pass http:nodeapp.{MY_CLUSTER}.local:3000 无法正常工作。
ECS 容器之间如何通信?
让我知道最简单的方法。
提前致谢。
【问题讨论】:
标签: docker docker-compose amazon-ecs nginx-reverse-proxy aws-fargate