无法连接到连接泊坞窗容器ECS
问题描述:
因此,这里是我想要做的事:无法连接到连接泊坞窗容器ECS
链接到Nginx的容器 - > Rails的容器中运行彪马
使用泊坞窗,撰写,该解决方案的伟大工程。我能够启动这两个容器,并且NGINX容器可以访问链接容器中端口3000上运行的服务。不幸的是,我将这个问题转移到AWS ECS时一直在处理很多难题。
首先,Dockerfile的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'
我证实,预计彪马开始,并出现在端口被服务的TCP流量3000
我的nginx的相关部分配置:
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.
}
我能够从我的nginx的容器内ping通MYAPP容器,所以我不认为这是一个安全组的问题。
答
事实证明,这是一个AWS安全组的问题。我曾愚蠢地预计Rails应用程序或许提醒我它无法到达数据库,而是它只是挂在那里永远,直到我手动轨下开始了。然后我得到了导致快速解决的超时时间。
请问您的myapp容器包括3000端口映射 - 你截断你的任务定义MYAPP - 我认为它缺少的 - 因此你可以ping MYAPP但不能连接到3000 – abdollar
看看这可以帮助您? https://*.com/questions/34517265/linking-containers-between-task-definitions-in-aws-ecs –
容器在同一个任务定义,所以我不应该需要映射端口或做任何奇怪服务发现。我想我的模式解掉这个:https://aws.amazon.com/blogs/compute/nginx-reverse-proxy-sidecar-container-on-amazon-ecs/ 我会深入到码头工人联网但在ECS上,也许有一个解决方案。 – mcheshier