pom.xml 打包配置
<plugins>
<!-- 打包成配置、jar分开的方式 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.hi.am.AssetManageApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 将jar、配置打包成一个jar的方式(胖包) -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.2.RELEASE</version>
<configuration>
<finalName>asset-manage-${version}</finalName>
<mainClass>com.hi.am.AssetManageApplication</mainClass>
</configuration>
</plugin>
<!-- 自定义打包方式 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<!--配置信息-->
<descriptor>/src/main/build/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
创建以下文件
![](https://img-blog.csdnimg.cn/img_convert/a8a00219409a3f6cc89dc043c5945bba.png)
assembly.xml
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>dist</id>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<!-- 打包配置文件 -->
<fileSet>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>*.*</include>
<include>**/*.sql</include>
</includes>
<filtered>true</filtered>
<outputDirectory>${file.separator}config</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.directory}/agent</directory>
<outputDirectory>${file.separator}agent</outputDirectory>
</fileSet>
<!-- 打包依赖文件 -->
<fileSet>
<directory>${project.build.directory}/lib</directory>
<outputDirectory>${file.separator}lib</outputDirectory>
<!-- 打包需要包含的文件 -->
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<!-- 打包主应用jar -->
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>${file.separator}</outputDirectory>
<includes>
<include>asset-manage.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/src/main/docker</directory>
<outputDirectory>${file.separator}</outputDirectory>
</fileSet>
</fileSets>
</assembly>
Dockerfile
# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基础镜像使用java 定制的镜像都是基于 FROM 的镜像,这里的 java 就是定制需要的基础镜像。后续的操作都是基于 java。
FROM java:8
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
# 将压缩包解压到/usr/local/src
ADD asset-manage-dist.tar.gz /usr/local/src
# 更新hierway-auth的存取和修改时间
RUN bash -c 'touch /usr/local/src/asset-manage/asset-manage.jar'
# 更新hierway-auth的存取和修改时间
#-Djava.security.egd=file:/dev/./urandom 加快随机数产生 缩短 Tomcat 启动时间
ENTRYPOINT [ "java","-Dfile.encoding=utf-8","-Djava.security.egd=file:/dev/./urandom","-Dspring.cloud.nacos.config.server-addr=${SERVER-ADDR}","-Dspring.cloud.nacos.config.namespace=${NACOS_NAMESPACE}","-Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}","-jar","/usr/local/src/asset-manage/asset-manage.jar" ]
创建镜像和容器
docker build -t asset-manage:0.0.1-SNAPSHOT .
docker run -d -e SPRING_PROFILES_ACTIVE="dev" -e SERVER-ADDR="127.0.0.1:8848" -e NACOS_NAMESPACE="f8026070-6ebf-460e-b8c8-8bbac049bb75" --name=asset-manage --restart=always --network host asset-manage:0.0.1-SNAPSHOT