web-dev-qa-db-fra.com

Comment exécuter deux commandes sur DockerFile?

Je dois exécuter deux commandes sur le fichier Docker, mais les deux commandes de Thèses attachent le terminal et bloquent l'exécution de la suivante.

dockerFile:

FROM sinet/nginx-node:latest

RUN mkdir /usr/src/app

WORKDIR /usr/src/app

RUN git clone https://name:[email protected]/joaocromg/front-web-alferes.git
WORKDIR /usr/src/app/front-web-alferes

RUN npm install 

RUN npm install bower -g 
RUN npm install gulp -g 
RUN bower install --allow-root 

COPY default.conf /etc/nginx/conf.d/

RUN nginx -g 'daemon off;' & # command 1 blocking

CMD ["gulp watch-dev"] # command 2 not executed

Quelqu'un sait comment puis-je résoudre ce problème?

5
Paulo

Je vous suggère d'essayer Supervisord dans ce cas. http://supervisord.org/

Edit: Voici un exemple dockerisé de httpd and ssh daemon: https://RIPTTUNIAL.com/docker/example/14132/dockerfile-plus-supervisord-conf

0
dschuldt

La réponse ici est que RUN nginx -g 'daemon off;' Démarrez intentionnellement NGinx au premier plan, qui bloque votre deuxième commande. Cette commande est destinée à lancer des conteneurs Docker avec cela comme processus de premier plan. En cours RUN nginx Start Nginx, créer des nœuds maîtres et enfants et (espérons-le) sortir avec un code d'état zéro. Bien que mentionné ci-dessus, ce n'est pas l'utilisation prévue de la course. Un script Bash fonctionnerait donc mieux dans ce cas.

0
huberu