如何快速将maven项目整合到docker中
我有一个maven项目,其项目结构如下:
parentProject:
-
parentProject:
APorject.war
BProject.war
-
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。
- 用Docker创buildReact App
- Docker文件权限与卷,Boot2docker和Virtualbox
- 如何在docker remote api中创build容器? (去-dockerclient)
- Docker撰写链接(别名)
- Dockerfile构build卷更改不反映在已装载的本地文件夹? (OS X / boot2Docker)
- 在docker构build之后加载Postgres转储
- 我应该给tomcat通过源代码Docker卷连接的redis容器的ip地址
- Docker撰写开发和生产环境最佳工作stream程
- docker工人 – 一个Dockerfile和docker-compose.yml上的多个项目