【发布时间】:2017-08-16 14:39:19
【问题描述】:
这就是我想要做的:
Nginx 容器链接到 -> 运行 Puma 的 Rails 容器
使用 docker-compose,这个解决方案效果很好。我能够启动两个容器,并且 NGINX 容器可以使用 volumes_from 访问链接容器中的卷。
首先,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
Nginx 配置非常基础,相关部分在这里:
ENV RAILS_ROOT /www/apps/myapp
# Set our working directory inside the image
WORKDIR $RAILS_ROOT
EXPOSE 80
EXPOSE 443
同样,这一切都在 docker-compose 中运行良好。但是,在 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.
}
任务按预期在 ECS 中启动,myapp 容器看起来很完美。但是,当我使用
签出 EC2 实例主机上的 nginx 容器时docker exec -it <container> bash
我登陆 /www/apps/myapp,但目录是空的。我尝试安装驱动器并做其他几件事,但我在这里不知所措......有人对如何从链接容器中获取文件以在我的 nginx 容器中使用有任何想法吗?
【问题讨论】:
标签: ruby-on-rails docker nginx amazon-ecs