Docker en cours d’exécution nginx plus jar

J’essaie d’exécuter un conteneur de docker qui contient à la fois un serveur java java et nginx devant lui pour effectuer le transfert de sous-domaine-> port, et je ne semble pas le configurer correctement.
Ceci est mon fichier Docker:

FROM java:8 MAINTAINER somefool RUN apt-get update RUN apt-get -y install nginx COPY theBigOwlServer.jar /data/server.jar RUN rm -v /etc/nginx/nginx.conf ADD nginx.conf /etc/nginx/ RUN echo "daemon off;" >> /etc/nginx/nginx.conf EXPOSE 80 8080 CMD java -jar /data/server.jar CMD service nginx start #<--- line AAA 

Le java jar écoute les ports 8080 et 8090. Lorsque je lance ce conteneur avec -p 80:80 -p 8080: 8080, le jar ne semble pas démarrer. Je ne vois aucune sortie de console et je ne peux pas y accéder depuis l’extérieur du conteneur avec curl localhost:8080. Je peux atteindre nginx sur le port 80, mais les demandes qui devraient être transmises au pot reviennent avec une réponse vide.

Cependant, si je commente la ligne AAA, le pot commence bien. Il génère une sortie de console et curl localhost:8080 parvient. Comment puis-je courir nginx et le pot ensemble?

Les conteneurs Docker sont conçus pour le sandboxing en un seul processus. Ne prenez donc qu’un seul argument CMD. Dans ce cas, il suffit de sélectionner le dernier dans le fichier. Si vous devez exécuter plusieurs pré-essais dans un conteneur (et il est parfois judicieux de le faire), utilisez quelque chose comme Supervisor pour exécuter vos commandes pour vous (de sorte que votre CMD exécutera Supervisor). Ensuite, vous obtenez des goodies comme des chiens de garde de processus et tels jetés aussi.

Vous pourriez faire quelque chose comme:

 ENTRYPOINT sh -c 'service nginx start && java -jar /data/server.jar' 

J’ai essayé ça et ça a fonctionné pour moi.