2017-08-16 6 views
0

Alors, voici ce que je suis en train de faire:volume monté en utilisant un volume de-est vide

conteneur Nginx lié à -> Rails conteneur en cours d'exécution Puma

En utilisant docker-Compose, cette solution fonctionne très bien. Je suis capable de démarrer les deux conteneurs et le conteneur NGINX a accès au volume dans le conteneur lié en utilisant volumes_from.

D'abord, les bits correspondants Dockerfile pour 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 

config Nginx est assez parties de base, pertinentes sont ici:

ENV RAILS_ROOT /www/apps/myapp 

# Set our working directory inside the image 
WORKDIR $RAILS_ROOT 

EXPOSE 80 
EXPOSE 443 

Encore une fois, tout cela fonctionne très bien dans docker-Compose . Cependant, dans ECS, je suis en train d'utiliser la définition des tâches suivantes:

{ 
"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. 
} 

La tâche commence dans ECS comme prévu, et le récipient monappli semble parfait. Cependant, quand je vérifie le conteneur nginx sur l'hôte de l'instance EC2 avec

docker exec -it <container> bash 

I atterriront dans/www/apps/myapp, mais le répertoire est vide. J'ai essayé de monter des disques et faire plusieurs autres choses et je suis à la perte ici ... quelqu'un a des idées sur la façon d'obtenir les fichiers du conteneur lié pour être utilisable dans mon conteneur nginx?

Répondre

0

Et bien sûr, juste après que je poste ce que je trouve la solution. Donc, personne n'a d'autre à sentir cette douleur, voici:

VOLUME [/www/apps/myapp/] 

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

soupir

+0

Eh oui, la directive 'de VOLUME' est en fait un tableau JSON. ;) (Ou une chaîne sans guillemets) –