如何快速将maven项目整合到docker中

我有一个maven项目,其项目结构如下:

parentProject:

  1. parentProject:

    APorject.war

    BProject.war

  2. parentApiProject:

    AProjectApi.jar

    BProjectApi.jar

我想同时打包这个项目,下面的四个项目被复制到四个docker中,并且会跑起来。

有什么好的想法和技术解决scheme吗?

我更喜欢在jar / war文件准备好之后构build图像(另一个选项是通过插件将其与maven集成)。 但在这两个选项中,您将需要首先创build一个Dockerfile。

你有4个应用程序,所以你将需要4个容器(一个容器 – 一件事或一个服务运行)。 每个容器都有自己的基本映像和设置,具体取决于您如何运行应用程序。

例如,Dockerfile将jar文件复制到图像并使用openjdk运行它:

FROM openjdk:8-jdk VOLUME /tmp COPY ./target/application.jar /application.jar RUN bash -c 'touch /application.jar' ENTRYPOINT exec java $JAVA_OPTS -jar /application.jar EXPOSE 7000 

要运行war文件,您可能需要tomcat映像 。

为您的自定义应用程序添加Dockerfiles后,下一步是创build一个docker-compose.yml文件。 它将包括您将运行整个项目所需的所有容器(4个您的自定义应用程序,数据库或任何其他服务)。

 version: '3' services: application: build: ./path_to_dockerfile ports: - 7000:7000 environment: - DATABASE_PASSWORD=ASKWejuFy1aPL3dzNv - ... any other credentials or application configs should be passed by environment variables - JAVA_OPTS=-Xmx512m -Xms256m -Djava.security.egd=file:/dev/./urandom -Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n restart: always depends_on: - application-db application-db: build: ./path_to_db_dockerfile # you can set image name without dockerfile for db ports: - 5432:5432 restart: always volumes: - db-data environment: - DATABASE_PASSWORD=ASKWejuFy1aPL3dzNv # # Configuration for other containers # volumes: db-data: 

在那里你将设置path到你的Docker文件,创build具有依赖关系的私有networking,并在一切准备就绪后,你可以使用docker-compose up命令来运行它。

首先你需要创build一个Dockerfile。

你可以参考这里的更多解释。

如何dockerize Maven项目? 以及有多less种方法来完成它?

你想单个Docker容器运行整个事情? 如果是这样,你需要从一个基础docker图像开始。 从用于运行Web应用程序的VM的基本映像开始。 然后将模块添加到您的泊坞窗图像中,作为最不易受变化影响的顺序层次。 这将帮助您利用docker层cachingfunction。