Je tends l'image APIMan/wildfly Docker avec ma propre image qui fera deux choses:Enchaînement Docker Images et exécuter pour
1) Laissez tomber ma demande de fichier .war dans les autonomes/déploiements wildfly
2) Exécuter une série de commandes cURL qui interrogeraient le serveur Wildfly afin de configurer APIMan.
Dans un premier temps, j'ai essayé de créer deux images Docker (le premier à déposer dans le fichier .war et la seconde pour exécuter les commandes cURL), mais je supposé à tort que l'instruction CMD dans l'image la plus interne serait exécutée en premier et les CMD seraient exécutés à l'extérieur.
Par exemple:
ImageA:
FROM jboss/apiman-wildfly:1.1.6.Final
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
COPY /RatedRestfulServer/target/RatedRestfulServer-1.0-SNAPSHOT.war /opt/jboss/wildfly/standalone/deployments/
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-c", "standalone-apiman.xml"]
Et
ImageB:
FROM ImageA
COPY /configure.sh /opt/jboss/wildfly/
CMD ["/opt/jboss/wildfly/configure.sh"]
j'avais d'abord cru qui serait lancé au cours de l'exécution wildfly/APIMAN premier (par l'instruction CMD ImageA) et mon script personnalisé serait exécuter (par l'instruction ImageB CMD). Je suppose que c'est incorrect parce que dans toute la hiérarchie entière, seulement 1 instruction CMD est exécutée (le dernier dans le Dockerfile externe au sein de la chaîne)? Donc, j'ai alors tenté de tout fusionner en 1 Dockerfile qui démarrerait (dans le processus de construction) Wildfly/APIMAN, lancerait les commandes cURL, fermerait le serveur wildfly et ensuite la commande CMD le redémarrerait pendant l'exécution et Wildfly/APIMan serait configuré. Toutefois, cela ne fonctionne pas car lorsque je lance Wildfly (dans le cadre de la construction), il contrôle la console et attend l'affichage des messages de journal, ainsi la construction ne se termine jamais. Si j'ajoute un '&' à la fin de la commande RUN, il ne s'exécute pas (Dockerfile : RUN results in a No op).
Voici mon Dockerfile pour cette tentative:
FROM jboss/apiman-wildfly:1.1.6.Final
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
COPY /RatedRestfulServer/target/RatedRestfulServer-1.0-SNAPSHOT.war /opt/jboss/wildfly/standalone/deployments/
COPY /configure.sh /opt/jboss/wildfly/
RUN /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0 -c standalone-apiman.xml
RUN /opt/jboss/wildfly/configure.sh
RUN /opt/jboss/wildfly/bin/jboss-cli.sh --connect controller=127.0.0.1 command=:shutdown
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-c", "standalone-apiman.xml"]
Y a-t-il des solutions à cela? J'essaie de faire exécuter mon script "configure.sh" APRÈS Wildfly/APIMan. Cela ne me dérange pas si cela est fait pendant le processus de construction ou au moment de l'exécution, mais je ne vois aucun moyen de le faire pendant le processus de construction, car Wildfly n'a pas de mode démon.
+1 pour me diriger vers la fonction exec. Je suis nouveau à Docker et je ne le savais pas, mais je cherchais une option qui ne nécessitait aucune intervention en dehors de l'image. – Brooks