JAVA项目使用maven插件和docker实现自动打包部署运行
此文章使用maven的打包插件maven-assembly-plugin以及docker的打包功能,实现自动打包部署并运行的功能。
其中使用到的工具如下:
- maven 系统安装并配置完成maven
- intellij idea 确认安装docker插件并配置好docker连接,确认安装maven插件,并配置好相关配置
- docker 使用服务器安装docker服务,非windows
工程搭建
创建工程如下图所示:
创建工程为maven工程,工程主结构包括:
- assembly文件夹: 包含assembly.xml配置文件,其中包含打包的配置文件
- bin文件夹:包含启动运行脚本,start.sh脚本请自行搜索
- java目录:包含java代码
pom文件配置
<dependencies>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution><!-- 配置执行器 -->
<id>make-assembly</id>
<phase>package</phase><!-- 绑定到package生命周期阶段上 -->
<goals>
<goal>single</goal><!-- 只运行一次 -->
</goals>
<configuration>
<finalName>${project.name}</finalName>
<descriptor>src/main/assembly/assembly.xml</descriptor><!--配置描述文件路径-->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
添加了一个curator的包用做测试,主要打包配置在中,打包后的文件名为**${project.name},配置文件路径为src/main/assembly/assembly.xml**。
打包配置文件
<assembly>
<id></id>
<formats>
<format>tar.gz</format><!--打包的文件格式,也可以有:war zip-->
</formats>
<!--tar.gz压缩包下是否生成和项目名相同的根目录-->
<includeBaseDirectory>true</includeBaseDirectory>
<dependencySets>
<dependencySet>
<!--是否把本项目添加到依赖文件夹下-->
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<!--将scope为runtime的依赖包打包-->
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>src/main/bin</directory>
<outputDirectory>/</outputDirectory>
<!-- 将start.sh脚本放在打包后的根目录下-->
</fileSet>
<fileSet>
<directory>target/classes</directory>
<outputDirectory>classes</outputDirectory>
</fileSet>
</fileSets>
</assembly>
配置文件如上图所示,注意将start.sh脚本放在打包后的根目录下。
打包结果展示
运行mvn clean package查看打包结果
如上图所示,在target文件夹中打包出.tar.gz包,打开压缩包结构:
通过docker远程部署
如何在intellij idea中配置docker并使用tls连接的方法,将在另外的文章中详述,这里假设docker相关配置都已配置完成并测试连接正常。
编写docker文件如下:
FROM ***
MAINTAINER dreamxiaohai dreamxiaohai@gmail.com
RUN apt-get update && apt-get install openjdk-8-jre -y
ADD target/testPackageAndDocker.tar.gz /usr/local/
RUN chmod +x /usr/local/testPackageAndDocker/start.sh
WORKDIR /usr/local/testPackageAndDocker/
CMD ./start.sh start && tail -f /tmp/result.log
配置intellij idea运行命令
配置完成后,点击运行,可看到以下结果,证明远程运行无误