使用spring-native构建Docker镜像出现CA证书错误如何解决?
该x509证书错误和IntelliJ的证书配置无关,本质是
spring-boot:build-image执行过程中,Docker daemon拉取镜像、或Paketo Buildpack运行时访问外部HTTPS资源时,运行环境不信任对应站点的证书导致的。可尝试以下解决方案:
- 方案1:配置Docker信任站点证书
如果你是在公司网络环境下使用私有镜像源或HTTPS代理,需要将对应站点的根证书/中级证书导入到Docker的信任列表中:- Windows/macOS:打开Docker Desktop设置,进入「Resources > Certificates」页面,添加证书文件后重启Docker Desktop即可
- Linux:将.crt格式的证书文件放入
/usr/local/share/ca-certificates/目录,执行sudo update-ca-certificates后重启Docker服务
- 方案2:临时关闭TLS验证(仅推荐本地调试使用)
可以通过修改插件配置或执行命令添加参数的方式跳过TLS校验,修改后的插件配置如下:
也可以直接在执行命令时添加参数:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <docker> <tlsVerify>false</tlsVerify> </docker> <image> <builder>paketobuildpacks/builder:tiny</builder> <env> <BP_NATIVE_IMAGE>true</BP_NATIVE_IMAGE> </env> </image> </configuration> </plugin>mvn spring-boot:build-image -Dspring-boot.build-image.docker.tlsVerify=false - 方案3:向Buildpack运行环境注入信任证书
如果是Buildpack运行过程中拉取依赖时触发的证书错误,可以将本地证书挂载到Buildpack的证书目录,执行命令时添加挂载参数即可:mvn spring-boot:build-image -Dspring-boot.build-image.volumes=/本地证书存放目录:/platform/bindings/ca-certificates
同时在插件的env配置中添加<BP_RUNTIME_CERT_BINDINGS_DISABLED>false</BP_RUNTIME_CERT_BINDINGS_DISABLED> - 方案4:提前手动拉取依赖镜像
如果是拉取Paketo官方镜像时触发的错误,可以先手动拉取所需镜像到本地,再执行构建命令:docker pull paketobuildpacks/builder:tiny docker pull paketobuildpacks/run:tiny-cnb
内容的提问来源于stack exchange,提问作者S-Wing
相关产品推荐
相关产品推荐

