[英]How to quickly integrate the maven project into the docker
我有一个Maven项目,其项目结构如下:
parentProject:
parentProject:
APorject.war
BProject.war
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
命令运行它。
您是否要一个Docker容器来运行整个过程? 如果是这样,则需要从基本docker镜像开始。 从用于运行Web应用程序的VM的基础映像开始。 然后按不易受更改的顺序将模块作为层添加到您的docker映像中,以易受更改的顺序排列。 这将帮助您利用Docker层缓存功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.