3

j'ai une version légèrement modifiée du conteneur ici:Comment puis-je exécuter un conteneur proxy inverse nginx sur ECS en utilisant des arguments

http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/

Pour l'exécuter, j'utiliser localement:

$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock -t jwilder/nginx-proxy 

Et exécuter mes autres conteneurs similaires à ci-dessous:

$ docker run -e VIRTUAL_HOST=my-domain.local -t -d my-repo/site-name 

Je rencontre des problèmes avec la conversion en une définition de tâche sur ECS.

définition des tâches

J'ai deux conteneurs:

nginx-reverse-proxy

  • mappings Port: hôte 80 Container 80
  • Essential: true
  • Commande: /app/docker-entrypoint.sh

statique site

  • mappings Port: Host 5000 Container 5000
  • Essential: false
  • Commande: /some-file.sh
  • vars Env: VIRTUAL_HOST static.example.com

J'ai un cluster avec une instance ECS et un serveur avec une tâche, définie ci-dessus. Cela continue à tourner et échoue avec "STOPPED (conteneur essentiel dans la tâche sortie)".

Maintenant je suppose que j'ai besoin de configurer les volumes mais tous les exemples que je peux trouver ont un chemin et un nom et je ne vois pas comment je peux convertir ce "/var/run/docker.sock:/tmp/docker .sock "dans tous les champs disponibles.

+0

Question stupide, mais cela ne peut-il pas être accompli avec les équilibreurs de charge ELB/ALB d'AWS? Pourquoi utiliser nginx? – codepushr

+0

AWS facture * beaucoup * pour les ELB. Puisque vous avez potentiellement besoin d'un conteneur pour chaque conteneur que vous utilisez sur ECS, cela représente rapidement des centaines de dollars par mois pour les seuls ELB si vous avez beaucoup de petits services. – BjornW

Répondre

3

Je suis assez en retard, mais je vais répondre de toute façon aux personnes qui rencontreront ce post dans le futur.

Vous avez répondu à votre question. Il échoue parce que vous ne partagez pas le socket Docker de l'hôte, ce qui est essentiel pour l'image proxy nginx.

Accédez à votre définition de tâche et ajoutez un nouveau volume. Nommez-le socket et spécifiez le chemin d'accès de l'hôte /var/run/docker.sock. Ensuite, éditez votre conteneur proxy nginx et sous Points de montage, choisissez socket comme volume source et /tmp/docker.sock comme chemin de conteneur. Marquer comme lu seulement pour des raisons de sécurité aussi. Laissez la section Commande pour ce conteneur avec la valeur par défaut.

Déployez votre nouvelle révision et cela devrait fonctionner maintenant.