使用Spring Boot Maven插件部署GitLab镜像显示发布于42年前问题
问题解决:Docker镜像显示"Published 42 years ago"
根因分析
这个问题是因为Docker镜像的创建时间被设置为Unix纪元时间(1970-01-01),导致GitLab显示为"42年前"。本质是Spring Boot Maven插件依赖的Cloud Native Buildpacks未获取到有效的构建时间戳,默认使用了纪元时间作为镜像创建时间。
解决方案
1. 在插件配置中显式设置构建时间戳
修改spring-boot-maven-plugin的配置,添加<created>参数,直接使用GitLab CI内置的CI_JOB_STARTED_AT变量(该变量为ISO 8601格式的时间戳,符合Docker对镜像创建时间的格式要求):
<configuration> <image> <name>${env.DOCKER_IMAGE_PATH}/core:${env.CI_COMMIT_SHORT_SHA}</name> <publish>true</publish> </image> <!-- 新增配置:指定镜像创建时间 --> <created>${env.CI_JOB_STARTED_AT}</created> </configuration>
2. 在CI命令中传递构建日期环境变量
如果不想修改pom.xml,可以在GitLab CI的Maven执行命令中,通过BP_BUILD_DATE环境变量直接传入时间戳:
mvn clean package -Pci -DBP_BUILD_DATE=$CI_JOB_STARTED_AT
3. 确保插件版本为最新
使用Spring Boot 2.7.x及以上版本的spring-boot-maven-plugin,旧版本可能存在时间戳传递的兼容性问题,更新后可避免此类异常。
验证步骤
可以在CI脚本中添加echo $CI_JOB_STARTED_AT命令,确认该变量是否正常输出有效的ISO格式时间戳,排除变量未正确注入的问题。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

