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?
Eh oui, la directive 'de VOLUME' est en fait un tableau JSON. ;) (Ou une chaîne sans guillemets) –