maven插件
<build>
<!--打包的jar文件名称-->
<finalName>${project.artifactId}</finalName>
<plugins>
<!--打包时跳过单元测试-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!--jdk版本-->
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- 此处为程序主入口,主启动类-->
<mainClass>com.zdzq.FlowManageApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--生成的镜像名称,可自行替换为自己的项目名称-->
<imageName>flowmanage</imageName>
<!--覆盖旧镜像-->
<forceTags>true</forceTags>
<!--指定dockerfile文件所在目录,跟pom文件平级-->
<dockerDirectory>${basedir}</dockerDirectory>
<buildArgs>
<!--指定需要复制的jar的名称,在dockerfile中会根据这个参数来将jar复制到容器中-->
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<skipDockerBuild>true</skipDockerBuild>
</configuration>
</plugin>
</plugins>
</build>
Dockerfile文件
在Pom文件同级目录下Dockerfile文件
#使用jdk镜像作为基础镜像
FROM eclipse-temurin:11
RUN mkdir /opt/app
#暴露容器端口
EXPOSE 8080
ARG JAR_FILE
#将jar文件复制到镜像内
ADD target/${JAR_FILE} /opt/app/FlowManage.jar
#容器启动时运行的命令
ENTRYPOINT ["java","-jar","-Xms512m","-Xmx512m","/opt/app/FlowManage.jar"]
构建脚本
#切换到git指定分支
git checkout origin/main
#更新代码
git pull
#停止之前的容器,flowmanage是我自己的容器名称,可以自行更改
docker stop $(docker ps -a | grep flowmanage | awk '{print $1}')
#删除之前的容器,flowmanage是我自己的容器名称,可以自行更改
docker rm $(docker ps -a | grep flowmanage | awk '{print $1}')
#执行镜像构建命令
mvn docker:build
#运行容器
docker run -dit --restart=always -p 6100:8080 -m 512m --name 你启动的容器名称 $(docker images | grep 你的镜像名称 | awk '{print $3}') /bin/bash
赋予脚本权限
chmod 777 build.sh
执行脚本
当代码提交到git之后执行脚本进行打包启动容器,执行之后出现如下界面则表示打包成功,可以使用docker ps命令查看正在运行的容器了