Команды в файле докеров для запуска весеннего загрузочного приложения, развернутого на сервере jboss

Я новичок в докере. У меня есть приложение Springboot, работающее на jboss-eap-7.2. Обычно, когда я хочу запустить приложение, сначала мне нужно запустить команду mvn чистый пакет в cmd, а затем, после успешной сборки, я запускаю standalone.bat -c standalone_wingsure.xml, и все работает нормально. Я хочу запустить это приложение в контейнере докеров. Поэтому я создал DockerFile, в который входит этот код.

FROM openjdk:8
ADD target/wingsure_crop_insurance-0.0.1.war wingsure_crop_insurance-0.0.1.war
EXPOSE 8080
ENTRYPOINT ["java", "-war", "wingsure_crop_insurance-0.0.1.war"]

Это приложение Springboot имеет соединение с базой данных mysql. Итак, я создал контейнер докеров для образа mysql. Вот мой файл приложение.Свойства.

spring.datasource.url=jdbc:mysql://mysql-standalone:3306/crop_insurance
spring.datasource.username=chronito
spring.datasource.password=mysql

Мой пом.xml -

<?xml version = "1.0" encoding = "UTF-8"?>
<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>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.wingsure</groupId>
<artifactId>wingsure_crop_insurance</artifactId>
<version>0.0.1</version>
<packaging>war</packaging>
<name>wingsure_crop_insurance</name>
<description>Crop Insurance</description>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <!-- <version>3.1.0</version> -->
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency> -->
    <!-- https://mvnrepository.com/artifact/org.springframework.security.oauth/spring-security-oauth2 -->
    <!-- <dependency>
        <groupId>org.springframework.security.oauth</groupId>
        <artifactId>spring-security-oauth2</artifactId>
        <version>2.3.5.RELEASE</version>
    </dependency> -->


    <dependency>
         <groupId>botlibre-ai</groupId>
         <artifactId>botlibre-ai</artifactId>
         <scope>system</scope>
         <version>1.0</version>
         <systemPath>${basedir}\src\lib\botlibre-ai.jar</systemPath>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
   <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
  </dependency>
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>27.1-jre</version>
</dependency>
</dependencies>


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <outputDirectory>${env.JBOSS_HOME}/standalone/deployments/</outputDirectory>

            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
        </plugin>

        <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                    <mainClass>com.wingsure.WingsureCropInsuranceApplication</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

После mvn чистая установка файл войны создается в /целевая папка. Затем я создаю образ для приложения, выполнив команду D:\chronito\checkout\wingsure_crop_insurance\wingsure_crop_insurance>docker build . -t wingsure_crop_insurance-0.0.1

После создания образа я запускаю образ в контейнере, связывая его с контейнером mysql, и он успешно запускает контейнер без каких-либо ошибок.

D:\chronito\checkout\wingsure_crop_insurance\wingsure_crop_insurance>docker run -p 8080:8080 --name wingsure_crop_insurance-0.0.1 --link mysql-standalone:mysql -d wingsure_crop_insurance-0.0.1
7db57549b4c94ee0546275b962482a95b215f7aaf576be3d82340ec1934f117f

Но когда я вижу журналы, я получаю такую ​​​​ошибку:

D:\chronito\checkout\wingsure_crop_insurance\wingsure_crop_insurance>docker logs wingsure_crop_insurance-0.0.1
Unrecognized option: -war
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Я не знаю, что я делаю неправильно. Любое предложение было бы очень полезно.

После решения EbrahimPasbani предыдущая ошибка исчезла, но приложение springboot не запустилось. После запуска команды docker

D:\chronito\checkout\wingsure_crop_insurance\wingsure_crop_insurance>docker run -p 8080:8080 --name wingsure_crop_insurance-0.0.1 --link mysql-standalone:mysql -d wingsure_crop_insurance-0.0.1
7b3836cb4da2d6ab1c1a55b1fa2c3ac500c99372313388cdeb54f24249e073bd

он успешно запускает контейнер и показывает журналы как

=========================================================================

12:34:52,374 INFO  [org.jboss.modules] (main) JBoss Modules version 1.8.6.Final-redhat-00001

I> No access restrictor found, access to any MBean is allowed
Jolokia: Agent started with URL https://172.17.0.3:8778/jolokia/

12:34:53,501 INFO  [org.jboss.msc] (main) JBoss MSC version 1.4.5.Final-redhat-00001

12:34:53,520 INFO  [org.jboss.threads] (main) JBoss Threads version 2.3.2.Final-redhat-1

Основной класс -

@SpringBootApplication
@EnableConfigurationProperties({
FileStorageProperties.class
})
public class WingsureCropInsuranceApplication extends 
SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder 
application)
{
    return application.sources(WingsureCropInsuranceApplication.class);
}
public static void main(String[] args) {
    SpringApplication.run(WingsureCropInsuranceApplication.class, args);
}
}

Сама ошибка ясно говорит о том, что вариант войны не распознается, так как такого варианта как война нет. Вы можете создать упаковку jar и запустить ее, используя опцию jar. Если вы привязаны к боевой упаковке, вы можете увидеть ссылку ниже thepracticaldeveloper.com/2018/08/06/…

atishaya11 21.05.2019 13:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
1
1 145
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Команда java не имеет опции -war.
Если вы хотите использовать jboss, вам нужно развернуть свою войну на jboss в докере. Таким образом, файл докера должен быть от jboss, как показано ниже:

#start from eap72-openshift
FROM registry.access.redhat.com/jboss-eap-7/eap72-openshift

# Copy war to deployments folder
COPY target/wingsure_crop_insurance-0.0.1.war $JBOSS_HOME/standalone/deployments/

# User root to modify war owners
USER root

# Modify owners war
RUN chown jboss:jboss $JBOSS_HOME/standalone/deployments/wingsure_crop_insurance-0.0.1.war

# Important, use jboss user to run image
USER jboss

Спасибо @EbrahimPasbani, он решил ошибку и дал мне что-то полезное, но не запускает приложение springboot.

Kaustabh Nag 21.05.2019 15:10

@KaustabhNag Нет проблем. Вы успешно развернули на jboss без докера?

Ebrahim Pasbani 21.05.2019 15:15

да, я могу развернуть приложение на jboss без докера.

Kaustabh Nag 21.05.2019 15:25

@KaustabhNag Вы исключили кота в файле pom?

Ebrahim Pasbani 21.05.2019 15:27

да я сделал. Вы можете проверить мой файл pom.xml, указанный в моем вопросе.

Kaustabh Nag 21.05.2019 15:33

@KaustabhNag Во-первых) Как узнать, что ваше приложение не настраивается? Во-вторых) Можете ли вы показать свой класс SpringBootApplication, содержащий метод main?

Ebrahim Pasbani 21.05.2019 15:38

1) При нажатии на любой из остальных URL выдает 404 не найдено. 2) основной класс я редактировал по своим вопросам.

Kaustabh Nag 21.05.2019 15:51

@KaustabhNag Где занятия?

Ebrahim Pasbani 21.05.2019 15:57

@KaustabhNag Хорошо, я это видел. Насколько я вижу, проблем нет. Ничего другого мне в голову не приходит.

Ebrahim Pasbani 21.05.2019 16:00

Хорошо, спасибо. Какой должна быть команда для запуска standalone.bat -c standalone_wingsure.xml, который находится в D:\jboss-eap-7.2\standalone\configuration

Kaustabh Nag 22.05.2019 08:04

@KaustabhNag Не за что. Пожалуйста, взгляните на access.redhat.com/documentation/en-us/…

Ebrahim Pasbani 22.05.2019 10:26

Другие вопросы по теме