Я пытаюсь создать образ докера для своего Приложение Wildfly Java. Мое приложение создает соединение mysql с источником данных с JNDI. Мой ORM - Спящий режим. Когда я бегу
docker build -t mytag-app .
он возвращает ошибку:
The command is not available in the current context (e.g. required subsystems or connection to the controller might be unavailable).
The command '/bin/sh -c /opt/jboss/wildfly/bin/jboss-cli.sh --user=admin --password=admin --commands = "data-source add --name=source1 --jndi-name=java:jboss/datasources/MySqlDS --driver-name=mysql-connector-java-8.0.11.jar --connection-url=jdbc:mysql://sihors.com:3306/nynnphsj_wifigate2?serverTimezone=UTC --user-name=nynnphsj_loretto25 --password=dsotmpinkflo --enable=true"' returned a non-zero code: 1
Я уверен, что мой Dockerfileнеправильно, а где?
В моей папке для запуска докера есть:
Это мой Dockerfile:
FROM jboss/wildfly
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
ADD restful.war /opt/jboss/wildfly/standalone/deployments/
ADD mysql-connector-java-8.0.12.jar /opt/jboss/wildfly/standalone/deployments/
RUN /opt/jboss/wildfly/bin/jboss-cli.sh --user=admin --password=admin --commands = "data-source add --name=source1 --jndi-name=java:jboss/datasources/MySqlDS --driver-name=mysql-connector-java-8.0.11.jar --connection-url=jdbc:mysql://mydomain.com:3306/mydb2?serverTimezone=UTC --user-name=root --password=root --enable=true"
EXPOSE 8080 9990
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
А это мой Pom.xml для java-приложения:
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cosmink</groupId>
<artifactId>restful</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wildfly.bom</groupId>
<artifactId>wildfly-javaee7-with-tools</artifactId>
<version>${version.jboss.bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- JAVA EE API -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
<!-- MySQL DRIVER -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.1.Final</version>
<scope>provided</scope>
</dependency>
<!-- JJWT -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jjwt.version}</version>
</dependency>
<!-- jBCrypt -->
<dependency>
<groupId>de.svenkubiak</groupId>
<artifactId>jBCrypt</artifactId>
<version>${jbcrypt.version}</version>
</dependency>
<!-- HttpClient Library -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.4</version>
</dependency>
<!-- Nats Library Client-->
<dependency>
<groupId>io.nats</groupId>
<artifactId>jnats</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
<finalName>restful</finalName>
<plugins>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>${version.wildfly.maven.plugin}</version>
<executions>
<execution>
<id>deploy-driver</id>
<phase>package</phase>
<configuration>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<name>mysql-connector-java-8.0.11.jar</name>
</configuration>
<goals>
<goal>deploy-artifact</goal>
</goals>
</execution>
<execution>
<id>add-datasource</id>
<phase>install</phase>
<configuration>
<force>true</force>
<address>subsystem=datasources,data-source=java:jboss/datasources/MySqlDS</address>
<resources>
<resource>
<properties>
<jndi-name>java:jboss/datasources/MySqlDS</jndi-name>
<enable>true</enable>
<connection-url>jdbc:mysql://mydomain.com:3306/db?serverTimezone=UTC</connection-url>
<driver-name>mysql-connector-java-8.0.11.jar</driver-name>
<user-name>root</user-name>
<password>root</password>
<pool-name>people-web</pool-name>
<use-java-context>true</use-java-context>
</properties>
</resource>
</resources>
</configuration>
<goals>
<goal>add-resource</goal>
</goals>
</execution>
</executions>
<configuration>
<add-user>
<users>
<user>
<username>admin</username>
<password>admin</password>
</user>
</users>
</add-user>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
<jjwt.version>0.7.0</jjwt.version>
<jbcrypt.version>0.4.1</jbcrypt.version>
<version.jboss.bom>13.0.0.Final</version.jboss.bom>
<version.wildfly.maven.plugin>1.2.1.Final</version.wildfly.maven.plugin>
</properties>
Как создать образ докера для Java-приложения wildfly с подключением к источнику данных mysql?




docker build - это создание образа контейнера на основе Dockerfile. На данный момент ваш контейнер не запущен, как и ваша дикая муха. Ваш jboss-cli.sh не может работать, поскольку речь идет о взаимодействии с дикой мухой Бег.
Для достижения своей цели у вас есть два варианта
ADD - файл конфигурации (скорее всего, standalone.xml) в контейнере с настроенным источником данных. Каждый раз, когда контейнер запускается на основе вашего изображения, wildfly прочитает его и подключится.
ADD самодельный entrypoint.sh; сценарий bash, который запустит wildfly и выполнит все, что вам нужно для настройки вашего widlfy.
Хотя отчасти это правда, можно настроить WildFly в автономном режиме с помощью команд jboss-cli со встроенным сервером. Для этого не требуется запускать сервер WildFly.
Вы пробовали встраивать хост-контроллер перед «добавлением источника данных»? Я считаю, что добавление «embed-host-controller --std-out = echo» перед «добавлением источника данных» может решить вашу проблему (не забудьте разделить обе команды запятой).