使用volume-from挂载的音量为空
所以这就是我想要做的:
链接到Nginx容器 – >运行Puma的Rails容器
使用docker-compose,这个解决scheme效果很好。 我可以启动这两个容器,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的configuration是非常基本的,相关的部分在这里:
ENV RAILS_ROOT /www/apps/myapp # Set our working directory inside the image WORKDIR $RAILS_ROOT EXPOSE 80 EXPOSE 443
再一次,这一切都在docker构成伟大。 但是,在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容器中使用?
当然,我发布后,我find了解决办法。 所以没有人会感到这种痛苦,这里是:
VOLUME [/www/apps/myapp/] VOLUME ["/www/apps/myapp/"]
叹
- 将cloudbees ec2泊坞窗图像与泊坞窗中的docker相结合
- AWS ECS和Docker:不能通过tcp:// <MY-ID> .dkr.ecr.us-east-1.amazonaws.com:2375 / <PROJECT>连接到Docker守护进程。
- 如何将docker-compose.yml转换为Django的Dockerrun.aws.json
- 用ecs部署laravel网站后如何保持用户会话
- ECS将不会启动实例,“由于无法find资源,无法执行任务”。
- Docker:用于开发和生产环境的不同的ENVvariables
- 请参阅在同一个ECS集群中运行的其他服务/任务
- ECS +动物园pipe理员 – 动物园pipe理员必须被docker化
- Docker:能够从主机远程login远程机器,但不能从容器远程login