Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Maven使用JavaEE应用程序运行docker映像_Mysql_Maven_Docker_Wildfly - Fatal编程技术网

Mysql Maven使用JavaEE应用程序运行docker映像

Mysql Maven使用JavaEE应用程序运行docker映像,mysql,maven,docker,wildfly,Mysql,Maven,Docker,Wildfly,我有一个正在运行的JavaEE应用程序,它使用wildfly和mysql。现在我听说docker正在使用所有人,而且非常高效,所以我决定将我的开发环境docker化。听起来比现在容易 到目前为止,我所拥有的: Maven用于将我的应用程序打包到.war文件中 Arquillian单元测试,它在本地安装的wildfly实例上运行测试 我想要的是: 使用预定义的docker映像(jboss/wildfly,…)运行我的应用程序 也在docker容器中运行我的测试 我首先使用maven doc

我有一个正在运行的JavaEE应用程序,它使用wildfly和mysql。现在我听说docker正在使用所有人,而且非常高效,所以我决定将我的开发环境docker化。听起来比现在容易

到目前为止,我所拥有的:

  • Maven用于将我的应用程序打包到.war文件中
  • Arquillian单元测试,它在本地安装的wildfly实例上运行测试
我想要的是:

  • 使用预定义的docker映像(jboss/wildfly,…)运行我的应用程序
  • 也在docker容器中运行我的测试
我首先使用maven docker插件构建docker图像:

<plugin>
   <groupId>com.spotify</groupId>
   <artifactId>docker-maven-plugin</artifactId>
   <version>0.4.13</version>
   <configuration>
      <imageName>netbeans/sampleapplication</imageName>
      <dockerDirectory>src/main/docker</dockerDirectory>
      <resources>
         <resource>
            <targetPath>/</targetPath>
            <directory>${project.build.directory}</directory>
            <include>${project.build.finalName}.war</include>
         </resource>
      </resources>
      <execution>
         <id>build-image</id>
         <phase>package</phase>
         <goals>
            <goal>build</goal>
         </goals>
      </execution>
   </configuration>
</plugin>
Maven命令:
清理包docker:build
。 我可以通过docker maschine url访问应用程序服务器,而不像以前使用localhost那样。 最后,我只想使用一个maven命令:

  • 构建应用程序
  • 构建docker映像(wildfly、mysql…)
  • 运行arquillian junit测试
  • 部署应用程序并通过localhost:8080公开它
  • 如果进行了新部署,请停止容器

  • 我真的很挣扎。安博迪有什么办法吗

    没有直接的方法可以做到这一点,因为一些docker任务无法轻松映射到maven阶段。所以你需要选择一种更适合你的工作方式

    因此,一些想法有望带来解决方案:

    spotify docker maven插件没有运行映像的mojo()。它的主要任务是创建和发布docker图像

    因此,要运行映像,您只需编写一些bash脚本(因为它们很简单,它们将使用gitbash命令行在linux甚至windows上运行)。您可以使用

    要正确地将其映射到maven生命周期就有点棘手了

    与此相匹配的最佳阶段(仅我个人认为)是。该阶段包括集成前测试阶段、集成测试阶段和集成后测试阶段。想法是在预阶段启动容器。然后在集成测试阶段使用(不要让构建失败!)运行测试,并在后期阶段清理容器。在前期阶段清理该项目的容器也是一个好主意,以防一些僵尸容器粘在周围

    这些步骤可以放在配置文件中。由于集成测试也需要集成测试阶段,因此最终将使用不同的概要文件(mvn verify&&mvn verify-P docker测试和&mvn-P docker其他测试)执行“maven verify”

    另一种方法是使用。 这个插件比spotify创建的插件要复杂一点(同样:仅限我的意见)。但随之而来的是更多的目标

    使用插件提供的
    docker
    ,docker运行和停止目标为

    这两个插件最终在pom.xml中都有类似的复杂性——只是它对fabric插件的阅读能力更强。但也有一些不错的


    这就是我想到的两个选择。希望这会有所帮助:)

    没有直接的方法可以做到这一点,因为一些docker任务无法轻松映射到maven阶段。所以你需要选择一种更适合你的工作方式

    因此,一些想法有望带来解决方案:

    spotify docker maven插件没有运行映像的mojo()。它的主要任务是创建和发布docker图像

    因此,要运行映像,您只需编写一些bash脚本(因为它们很简单,它们将使用gitbash命令行在linux甚至windows上运行)。您可以使用

    要正确地将其映射到maven生命周期就有点棘手了

    与此相匹配的最佳阶段(仅我个人认为)是。该阶段包括集成前测试阶段、集成测试阶段和集成后测试阶段。想法是在预阶段启动容器。然后在集成测试阶段使用(不要让构建失败!)运行测试,并在后期阶段清理容器。在前期阶段清理该项目的容器也是一个好主意,以防一些僵尸容器粘在周围

    这些步骤可以放在配置文件中。由于集成测试也需要集成测试阶段,因此最终将使用不同的概要文件(mvn verify&&mvn verify-P docker测试和&mvn-P docker其他测试)执行“maven verify”

    另一种方法是使用。 这个插件比spotify创建的插件要复杂一点(同样:仅限我的意见)。但随之而来的是更多的目标

    使用插件提供的
    docker
    ,docker运行和停止目标为

    这两个插件最终在pom.xml中都有类似的复杂性——只是它对fabric插件的阅读能力更强。但也有一些不错的


    这就是我想到的两个选择。希望这会有所帮助:)

    除了直接使用JBoss Wildfly容器,您也可以签出。这是Wildfly的一个单独发行版,里面有更多关于docker的好东西

    除了直接使用JBoss Wildfly容器之外,您还可以签出。这是Wildfly的一个单独发行版,里面有更多关于docker的好东西

    我一定会看一看的!看起来很有希望。让我们看看它将如何与一个单独的数据库容器一起使用。我一定会看一看!看起来很有希望。让我们看看它将如何与单独的数据库容器一起使用。
    FROM jboss/wildfly
    COPY *.war /opt/jboss/wildfly/standalone/deployments/app.war
    EXPOSE 8080 9990