build-helper-maven-plugin: 用于解决maven.build.timestamp时区问题,maven.build.timestamp使用的是UTC时间,及伦敦时间,为了解决这个问题,我们使用build-helper-maven-plugin来创建北京时间,即GMT+8。

1.创建Dockerfile文件

在 maven 项目中,添加 Dockerfile 文件,Dockerfile 文件一般放置在项目 main/docker 目录下。

# 依赖于oracle官方JDK8
FROM openjdk:8-jdk-alpine
# 将本地路径/tmp挂载到容器
VOLUME /tmp
# 拷贝jar包 eureka-server.jar为目标jar包,重命名为app.jar
COPY eureka-server-1001.jar app.jar
# 运行jar包
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

2.修改pom文件

<build>
    <!-- 项目名字定制:名称-端口 -->
    <finalName>${project.artifactId}-${my-demo.server.port}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <!-- 动态生成 年月日-时分 tag -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <id>timestamp-property</id>
                    <goals>
                        <goal>timestamp-property</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <name>build.time</name>
                <pattern>yyyyMMdd-HHmm</pattern>
                <locale>zh_CN</locale>
                <timeZone>GMT+8</timeZone>
            </configuration>
        </plugin>
        <!-- 新增的 docker maven 插件 -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <!-- docker 镜像相关的配置信息 -->
            <configuration>
                <!-- 镜像名,这里用工程名/服务名 -->
                <imageName>my/demo:0.0.1</imageName>
                <!-- Dockerfile 所在路径 -->
                <dockerDirectory>src/main/docker</dockerDirectory>
                <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
                        <directory>${project.build.directory}</directory>
                        <!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>
</build>

3.构建镜像

mvn build-helper:timestamp-property docker:build

4.执行结果

在这里插入图片描述

整理完毕,完结撒花~





参考地址:

1.dockerfile-maven-plugin使用当前时间作为镜像tag,https://blog.csdn.net/john1337/article/details/110134281

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐