无法连接到ECS中的链接泊坞窗容器

所以这就是我想要做的:

链接到Nginx容器 – >运行Puma的Rails容器

使用docker-compose,这个解决scheme效果很好。 我可以启动这两个容器,NGINX容器可以访问链接容器中端口3000上运行的服务。 不幸的是,在将其转移到AWS ECS时,我一直在处理很多难题。

首先,Dockerfile for Rails的相关位:

ENV RAILS_ROOT /www/apps/myapp RUN mkdir -p $RAILS_ROOT WORKDIR $RAILS_ROOT .... lots of files get put in their proper places .... EXPOSE 3000 VOLUME [/www/apps/myapp/] CMD puma -C config/puma.rb' 

我证实,美洲狮是按预期开始的,似乎是在3000端口上服务于tcpstream量。

我的nginxconfiguration的相关部分:

 upstream puma { fail_timeout=0; server myapp:3000; } server { listen 80 default deferred; server_name *.myapp.com; location ~ (\.php$|\.aspx$|wp-admin|myadmin) { return 403; } root /www/apps/myapp/public; try_files $uri/index.html $uri @puma; 

Nginx的dockerfile:

 ENV RAILS_ROOT /www/apps/myapp # Set our working directory inside the image WORKDIR $RAILS_ROOT EXPOSE 80 

这是我的ECS任务定义:

 { "family": "myapp", "containerDefinitions": [ { "name": "web", "image": "%REPOSITORY_URI%:nginx-staging", "cpu": 512, "memory": 512, "portMappings": [ { "containerPort": 80, "protocol": "tcp" }, { "containerPort": 443, "protocol": "tcp" } ], "links": [ "myapp" ], "volumesFrom": [ { "sourceContainer": "myapp", "readOnly": false } ], "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "awslogs-myapp-staging", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "awslogs-myapp-nginx" } } }, { "image": "%REPOSITORY_URI%:v_%BUILD_NUMBER%", "name": "myapp", "cpu": 2048, "memory": 2056, "essential": true, ...bunch of environment variables, etc. } 

我能够ping我的nginx容器内的myapp容器,所以我不认为这是一个安全组问题。

这原来是一个AWS安全组的问题。 我愚蠢地期望Rails应用程序可能会提醒我,它不能到达数据库,但它只是永远挂在那里,直到我手动启动它的轨道c。 然后我得到了超时,导致了快速解决。