繁体   English   中英

如何快速将Maven项目集成到Docker

[英]How to quickly integrate the maven project into the docker

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

parentProject:

  1. parentProject:

    APorject.war

    BProject.war

  2. parentApiProject:

    AProjectApi.jar

    BProjectApi.jar

我想将以下四个项目同时打包到四个docker中,然后将其打包。

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

我更喜欢在jar / war文件准备好之后构建映像(另一个选项是通过plugin将其与maven集成)。 但是在这两个选项中,您都需要先创建一个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 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:

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

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

您可以在此处参考以获取更多说明。

如何docker Maven项目? 以及有多少种方法可以实现?

您是否要一个Docker容器来运行整个过程? 如果是这样,则需要从基本docker镜像开始。 从用于运行Web应用程序的VM的基础映像开始。 然后按不易受更改的顺序将模块作为层添加到您的docker映像中,以易受更改的顺序排列。 这将帮助您利用Docker层缓存功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM