maven很好的把项目整合在一起,在部署时,每个项目可以有自己的Dockerfile,在构建后把对应的jar包复制到Dockerfile的同级目录,使用使用统一的打包镜像和容器启动方法去执行就可以了。
<build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>package</phase> <configuration> <tasks> <!-- 把jar包复制到/src/main/docker文件夹 --> <copy todir="${project.basedir}/src/main/docker"> <fileset dir="${project.build.directory}"> <include name="${project.artifactId}-${project.version}.jar"/> </fileset> </copy> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--加入下面两项配置,把依赖包打到jar里--> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> </plugins> </build>
在src/main/docker目录下添加这个文件
FROM fabric8/java-jboss-openjdk8-jdk:1.4 COPY 你的jar名称.jar /deployments/app.jar ENV URL="http://127.0.0.1:18082/manage/status" EXPOSE 8082 18082
在根项目里的lifecycle->install,然后生成各个项目的jar文件,把对应的jar复制到对应的目录里
docker build ./src/main/docker -t maven-spring-b