如何快速将maven项目集成到docker中

时间:2017-08-24 05:30:39

标签: java maven docker docker-compose dockerfile

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

parentProject:

  1. parentProject:

    APorject.war

    BProject.war

  2. parentApiProject:

    AProjectApi.jar

    BProjectApi.jar

  3. 我想在将以下四个项目复制到四个泊坞窗的同时打包项目,并且会运行起来。

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

3 个答案:

答案 0 :(得分:1)

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

您有4个应用程序,因此您需要4个容器(一个容器 - 要做的一件事或要运行的一个服务)。每个容器都有自己的基本映像和设置,具体取决于您运行应用程序的方式。

例如,Dockerfile将jar文件复制到image并使用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 image

为自定义应用程序添加Dockerfiles后,下一步是创建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:

在那里,您将设置Dockerfiles的路径,创建具有依赖关系的专用网络,并且在一切准备就绪后,您可以使用docker-compose up命令运行它。

答案 1 :(得分:0)

首先,您需要创建一个Dockerfile。

您可以在此处参考以获得更多解释。

How to dockerize maven project? and how many ways to accomplish it?

答案 2 :(得分:0)

你想要一个Docker容器运行整个东西吗?如果是这样,您需要从基础泊坞窗图像开始。从用于运行Web应用程序的VM的基本映像开始。然后将模块作为图层添加到docker镜像中,因为它们最不容易受到更改的影响。这将有助于您利用docker layer缓存功能。