【问题标题】:Mounted volume using volume-from is empty使用 volume-from 挂载的卷为空
【发布时间】: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


    【解决方案1】:

    当然,在我发布这个之后,我就找到了解决方案。所以没有其他人必须感受到这种痛苦,这里是:

    VOLUME [/www/apps/myapp/]
    
    VOLUME ["/www/apps/myapp/"]
    

    叹息

    【讨论】:

    • 是的,VOLUME 指令实际上是一个 JSON 数组。 ;)(或不带引号的字符串)
    猜你喜欢
    • 2019-12-21
    • 2020-01-20
    • 2021-08-23
    • 2021-06-23
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多