Dockerfile 构建 jdk17-maven3.8.8 容器

下载 maven、jdk 软件:

下载 jdk17 版本:

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

注:在制作时,需要指定目录,这里指定 source-software

下载 maven 3.8.8 版本:

这里是直接在官网上下载的

Maven – Download Apache Maven
在这里插入图片描述
下载之后将文件上传至/source-software 目录下,上传动作这里就描述了,自行处理;
在这里插入图片描述

wget https://archive.apache.org/dist/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz

开发 Dockerfile 文件内容:

国内yum源

阿里yum源:http://mirrors.aliyun.com/repo/  
163(网易)yum源: http://mirrors.163.com/.help/  
中科大的Linux安装镜像源:http://centos.ustc.edu.cn/  
搜狐的Linux安装镜像源:http://mirrors.sohu.com/  
北京首都在线科技:http://mirrors.yun-idc.com/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/Centos-7.repo
vim Dockerfile
FROM centos:7.9.2009
MAINTAINER TMesh
ADD Centos-7.repo /etc/yum.repos.d
ADD java/jdk/jdk-17_linux-x64_bin.tar.gz  /usr/local/java/
ADD java/maven/apache-maven-3.8.8-bin.tar.gz /usr/local/maven
ENV JAVA_HOME=/usr/local/java/jdk-17.0.12
ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar
ENV PATH=
C:\Users\admin\.jdks\corretto-18.0.2\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:D:\soft\IntelliJIDEA2022.2.5\lib\idea_rt.jar=49958:D:\soft\IntelliJIDEA2022.2.5\bin -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\leijavacode\mbvue\target\classes;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-starter\3.5.0\spring-boot-starter-3.5.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot\3.5.4\spring-boot-3.5.4.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-context\6.2.9\spring-context-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-autoconfigure\3.5.4\spring-boot-autoconfigure-3.5.4.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-starter-logging\3.5.4\spring-boot-starter-logging-3.5.4.jar;D:\soft\apache-maven-3.8.8\mvn_resp\ch\qos\logback\logback-classic\1.5.18\logback-classic-1.5.18.jar;D:\soft\apache-maven-3.8.8\mvn_resp\ch\qos\logback\logback-core\1.5.18\logback-core-1.5.18.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\apache\logging\log4j\log4j-to-slf4j\2.24.3\log4j-to-slf4j-2.24.3.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\apache\logging\log4j\log4j-api\2.24.3\log4j-api-2.24.3.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\slf4j\jul-to-slf4j\2.0.17\jul-to-slf4j-2.0.17.jar;D:\soft\apache-maven-3.8.8\mvn_resp\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-core\6.2.9\spring-core-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-jcl\6.2.9\spring-jcl-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\yaml\snakeyaml\2.4\snakeyaml-2.4.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\slf4j\slf4j-api\2.0.17\slf4j-api-2.0.17.jar;D:\soft\apache-maven-3.8.8\mvn_resp\jakarta\xml\bind\jakarta.xml.bind-api\4.0.2\jakarta.xml.bind-api-4.0.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\jakarta\activation\jakarta.activation-api\2.1.3\jakarta.activation-api-2.1.3.jar;D:\soft\apache-maven-3.8.8\mvn_resp\net\bytebuddy\byte-buddy\1.17.6\byte-buddy-1.17.6.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\mysql\mysql-connector-j\8.0.33\mysql-connector-j-8.0.33.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-starter-data-jpa\4.0.0-M1\spring-boot-starter-data-jpa-4.0.0-M1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-starter-jdbc\3.5.4\spring-boot-starter-jdbc-3.5.4.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\zaxxer\HikariCP\6.3.1\HikariCP-6.3.1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-jdbc\6.2.9\spring-jdbc-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-tx\6.2.9\spring-tx-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-data-jpa\4.0.0-M1\spring-boot-data-jpa-4.0.0-M1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-data-commons\4.0.0-M1\spring-boot-data-commons-4.0.0-M1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\data\spring-data-commons\3.5.2\spring-data-commons-3.5.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-hibernate\4.0.0-M1\spring-boot-hibernate-4.0.0-M1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-jpa\4.0.0-M1\spring-boot-jpa-4.0.0-M1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-jdbc\4.0.0-M1\spring-boot-jdbc-4.0.0-M1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-sql\4.0.0-M1\spring-boot-sql-4.0.0-M1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-tx\4.0.0-M1\spring-boot-tx-4.0.0-M1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\jakarta\persistence\jakarta.persistence-api\3.1.0\jakarta.persistence-api-3.1.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\hibernate\orm\hibernate-core\6.6.22.Final\hibernate-core-6.6.22.Final.jar;D:\soft\apache-maven-3.8.8\mvn_resp\jakarta\transaction\jakarta.transaction-api\2.0.1\jakarta.transaction-api-2.0.1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\jboss\logging\jboss-logging\3.6.1.Final\jboss-logging-3.6.1.Final.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\hibernate\common\hibernate-commons-annotations\7.0.3.Final\hibernate-commons-annotations-7.0.3.Final.jar;D:\soft\apache-maven-3.8.8\mvn_resp\io\smallrye\jandex\3.2.0\jandex-3.2.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\fasterxml\classmate\1.7.0\classmate-1.7.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\glassfish\jaxb\jaxb-runtime\4.0.5\jaxb-runtime-4.0.5.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\glassfish\jaxb\jaxb-core\4.0.5\jaxb-core-4.0.5.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\eclipse\angus\angus-activation\2.0.2\angus-activation-2.0.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\glassfish\jaxb\txw2\4.0.5\txw2-4.0.5.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\sun\istack\istack-commons-runtime\4.1.2\istack-commons-runtime-4.1.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\jakarta\inject\jakarta.inject-api\2.0.1\jakarta.inject-api-2.0.1.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-orm\6.2.9\spring-orm-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\data\spring-data-jpa\3.5.2\spring-data-jpa-3.5.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\antlr\antlr4-runtime\4.13.0\antlr4-runtime-4.13.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-aspects\6.2.9\spring-aspects-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\aspectj\aspectjweaver\1.9.24\aspectjweaver-1.9.24.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-starter-web\3.5.0\spring-boot-starter-web-3.5.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-starter-json\3.5.4\spring-boot-starter-json-3.5.4.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\fasterxml\jackson\core\jackson-databind\2.19.2\jackson-databind-2.19.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\fasterxml\jackson\core\jackson-annotations\2.19.2\jackson-annotations-2.19.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\fasterxml\jackson\core\jackson-core\2.19.2\jackson-core-2.19.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.19.2\jackson-datatype-jdk8-2.19.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.19.2\jackson-datatype-jsr310-2.19.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\fasterxml\jackson\module\jackson-module-parameter-names\2.19.2\jackson-module-parameter-names-2.19.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-starter-tomcat\3.5.4\spring-boot-starter-tomcat-3.5.4.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\apache\tomcat\embed\tomcat-embed-core\10.1.43\tomcat-embed-core-10.1.43.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\apache\tomcat\embed\tomcat-embed-el\10.1.43\tomcat-embed-el-10.1.43.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.43\tomcat-embed-websocket-10.1.43.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-web\6.2.9\spring-web-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-beans\6.2.9\spring-beans-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-webmvc\6.2.9\spring-webmvc-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-aop\6.2.9\spring-aop-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\spring-expression\6.2.9\spring-expression-6.2.9.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springdoc\springdoc-openapi-starter-webmvc-ui\2.5.0\springdoc-openapi-starter-webmvc-ui-2.5.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springdoc\springdoc-openapi-starter-webmvc-api\2.5.0\springdoc-openapi-starter-webmvc-api-2.5.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springdoc\springdoc-openapi-starter-common\2.5.0\springdoc-openapi-starter-common-2.5.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\io\swagger\core\v3\swagger-core-jakarta\2.2.21\swagger-core-jakarta-2.2.21.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\apache\commons\commons-lang3\3.17.0\commons-lang3-3.17.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\io\swagger\core\v3\swagger-annotations-jakarta\2.2.21\swagger-annotations-jakarta-2.2.21.jar;D:\soft\apache-maven-3.8.8\mvn_resp\io\swagger\core\v3\swagger-models-jakarta\2.2.21\swagger-models-jakarta-2.2.21.jar;D:\soft\apache-maven-3.8.8\mvn_resp\jakarta\validation\jakarta.validation-api\3.0.2\jakarta.validation-api-3.0.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.19.2\jackson-dataformat-yaml-2.19.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\webjars\swagger-ui\5.13.0\swagger-ui-5.13.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-starter-actuator\3.5.0\spring-boot-starter-actuator-3.5.0.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-actuator-autoconfigure\3.5.4\spring-boot-actuator-autoconfigure-3.5.4.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\springframework\boot\spring-boot-actuator\3.5.4\spring-boot-actuator-3.5.4.jar;D:\soft\apache-maven-3.8.8\mvn_resp\io\micrometer\micrometer-observation\1.15.2\micrometer-observation-1.15.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\io\micrometer\micrometer-commons\1.15.2\micrometer-commons-1.15.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\io\micrometer\micrometer-jakarta9\1.15.2\micrometer-jakarta9-1.15.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\io\micrometer\micrometer-core\1.15.2\micrometer-core-1.15.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\hdrhistogram\HdrHistogram\2.2.2\HdrHistogram-2.2.2.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\latencyutils\LatencyUtils\2.0.3\LatencyUtils-2.0.3.jar;D:\soft\apache-maven-3.8.8\mvn_resp\org\projectlombok\lombok\1.18.24\lombok-1.18.24.jar com.example.MbvueApplication . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.5.4) 2025-08-09T13:44:19.052+08:00 INFO 5068 --- [mbvue] [ main] com.example.MbvueApplication : Starting MbvueApplication using Java 18.0.2 with PID 5068 (D:\leijavacode\mbvue\target\classes started by admin in D:\leijavacode\mbvue) 2025-08-09T13:44:19.057+08:00 INFO 5068 --- [mbvue] [ main] com.example.MbvueApplication : The following 1 profile is active: "dev" 2025-08-09T13:44:21.188+08:00 INFO 5068 --- [mbvue] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2025-08-09T13:44:21.281+08:00 INFO 5068 --- [mbvue] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 76 ms. Found 2 JPA repository interfaces. 2025-08-09T13:44:21.350+08:00 WARN 5068 --- [mbvue] [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'repositoryTagsProvider' defined in class path resource [org/springframework/boot/data/autoconfigure/metrics/SpringDataRepositoryMetricsAutoConfiguration.class]: Cannot register bean definition [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=org.springframework.boot.data.autoconfigure.metrics.SpringDataRepositoryMetricsAutoConfiguration; factoryMethodName=repositoryTagsProvider; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/springframework/boot/data/autoconfigure/metrics/SpringDataRepositoryMetricsAutoConfiguration.class]] for bean 'repositoryTagsProvider' since there is already [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration; factoryMethodName=repositoryTagsProvider; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/data/RepositoryMetricsAutoConfiguration.class]] bound. 2025-08-09T13:44:21.377+08:00 INFO 5068 --- [mbvue] [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-08-09T13:44:21.424+08:00 ERROR 5068 --- [mbvue] [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: The bean 'repositoryTagsProvider', defined in class path resource [org/springframework/boot/data/autoconfigure/metrics/SpringDataRepositoryMetricsAutoConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/data/RepositoryMetricsAutoConfiguration.class] and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
08-10
在 Spring Boot 应用中,当出现 `Bean definition conflict` 错误时,通常是由于多个自动配置类尝试定义同名的 Bean。对于错误信息中提到的 `&#39;repositoryTagsProvider&#39;` Bean 冲突,涉及的两个自动配置类是 `SpringDataRepositoryMetricsAutoConfiguration` 和 `RepositoryMetricsAutoConfiguration`,这种冲突通常出现在 Spring Boot 与 Spring Data、Spring Boot Actuator 或其他相关模块的版本不一致或重复引入依赖的情况下。 要解决这个问题,可以采取以下几种方式: ### 1. 排除冲突的自动配置类 通过使用 `@SpringBootApplication` 的 `exclude` 属性来排除其中一个自动配置类。例如,可以排除 `RepositoryMetricsAutoConfiguration`: ```java @SpringBootApplication(exclude = RepositoryMetricsAutoConfiguration.class) public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 这种方式可以避免重复定义 `repositoryTagsProvider` Bean,同时保留另一个配置类的功能[^1]。 ### 2. 显式定义 Bean 如果需要保留两个配置类中的某些 Bean,可以显式地定义 `repositoryTagsProvider` Bean,以覆盖自动配置中的定义。例如: ```java @Bean public Function<RepositoryResource, Iterable<Tag>> repositoryTagsProvider() { return repositoryResource -> { // 自定义标签逻辑 return Arrays.asList(Tag.of("custom", "value")); }; } ``` 这种方式可以确保容器使用自定义的 Bean,从而避免冲突。 ### 3. 检查依赖版本 确保项目中使用的 Spring Boot、Spring Data 和相关模块的版本保持一致。版本不一致可能导致自动配置类行为异常。可以通过查看 `pom.xml` 或 `build.gradle` 文件,确保所有依赖使用相同的 Spring Boot 版本。 ### 4. 使用 `@Primary` 注解 如果两个配置类都定义了 `repositoryTagsProvider` Bean,可以通过在自定义 Bean 上添加 `@Primary` 注解,将其标记为首选 Bean: ```java @Bean @Primary public Function<RepositoryResource, Iterable<Tag>> repositoryTagsProvider() { return repositoryResource -> { // 自定义标签逻辑 return Arrays.asList(Tag.of("custom", "value")); }; } ``` 这样,Spring 容器会优先使用该 Bean,而不是自动配置类中的 Bean。 ### 5. 升级或降级 Spring Boot 版本 某些 Spring Boot 版本中可能存在已知的问题,导致自动配置类冲突。可以尝试升级到最新版本,或回退到一个稳定的版本,以解决此类问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值