Spring Boot 2.5.5使用Docker构建镜像时无法自定义镜像名如何解决?
问题根因
Docker镜像命名规范强制要求镜像的路径、名称字段仅可使用小写字母、数字,以及.、_、-三类特殊字符,不允许出现大写字母。你的配置存在两处不符合规范的问题:
- 你在spring-boot-maven-plugin中通过
${project.artifactId}动态拼接镜像名,而项目的artifactId取值为BankModule,包含大写字母B、M,不符合命名要求 - pom文件中
<version>标签的内容末尾带有多余的换行符,拼接镜像tag时可能带入不可见空白字符,也会触发格式校验失败
修复方案
你可以选择任意一种方式修复:
方案1:修改项目基础配置
将pom文件中的artifactId改为全小写,同时修正version标签的换行问题:<artifactId>bankmodule</artifactId> <version>0.0.1-SNAPSHOT</version>保留现有插件的镜像名配置即可正常构建。
方案2:仅修改插件配置,不调整项目artifactId
直接在插件的镜像名配置中写死全小写的镜像名称,不需要依赖artifactId动态拼接:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.5.5</version> <configuration> <image> <name>kolludocker/ms1-bankmodule:${project.version}</name> </image> <pullPolicy>IF_NOT_PRESENT</pullPolicy> </configuration> </plugin>
修改完成后重新执行镜像构建命令即可正常生成镜像。
内容的提问来源于stack exchange,提问作者Bhardwaja
相关产品推荐
相关产品推荐

