I am trying create image docker container with Dockerfile. I need execute some commands with jboss-cli when docker container starts. To execute jboss-cli it is necessary that the wildfly service is running.
My Dockerfile:
FROM jboss/wildfly:latest
USER jboss
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
And i tried add a jboss-cli command in my Dockerfile
FROM jboss/wildfly:latest
USER jboss
COPY mysql-connector-java-5.1.44.jar /opt/jboss/
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
USER root
#in this line is needed to change owner file to jboss user use this file
RUN chown jboss.root /opt/jboss/mysql-connector-java-5.1.44.jar
USER jboss
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
CMD ["/opt/jboss/wildfly/bin/jboss-cli.sh", "-c", "controller=localhost:9990", "--user=admin", "--password=admin", "--command=\"module add --name=com.mysql --resources=/opt/jboss/mysql-connector-java-5.1.44.jar --dependencies=javax.api,javax.transaction.api\""]
when i run the docker run command:
docker run --name=wildfly-ci -p 8080:8080 -p 9990:9990 wildfly-ci
i receive this message error from jboss-cli when run docker command
Failed to connect to the controller: The controller is not available at localhost:9990: java.net.ConnectException: WFLYPRT0053: Could not connect to remote+http://localhost:9990. The connection failed: WFLYPRT0053: Could not connect to remote+http://localhost:9990. The connection failed: XNIO000812: Connection closed unexpectedly
I don't know if is because the wildfly's service is not running yet in this moment or because is a some behavior with Docker Container.
This works for me:
RUN /bin/sh -c '$JBOSS_HOME/bin/standalone.sh -c=standalone-full.xml &' && \
sleep 10 && \
cd /tmp && \
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="module add --name=org.postgresql --resources=$JBOSS_HOME/standalone/configuration/postgresql-42.2.5.jar --dependencies=javax.api,javax.transaction.api,javax.servlet.api" && \
$JBOSS_HOME/bin/jboss-cli.sh --connect --command=:shutdown
# User root to modify war owners
USER root
CMD ["/opt/eap/bin/standalone.sh", "-c", "standalone-full.xml", "-b", "0.0.0.0","-bmanagement","0.0.0.0"]
Try this Dockerfile with single CMD,
Dockerfile
FROM jboss/wildfly:latest
USER jboss
COPY mysql-connector-java-5.1.44.jar /opt/jboss/
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
USER root RUN chown jboss.root /opt/jboss/mysql-connector-java-5.1.44.jar USER jboss
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0",";","/opt/jboss/wildfly/bin/jboss-cli.sh", "-c", "controller=localhost:9990", "--user=admin", "--password=admin", "--command=\"module add --name=com.mysql --resources=/opt/jboss/mysql-connector-java-5.1.44.jar --dependencies=javax.api,javax.transaction.api\""]