Render平台推送镜像后SpringBoot项目部署失败求助
Docker部署SpringBoot到Render失败求助
全天尝试通过Docker将SpringBoot项目部署至Render平台,中途解决各类错误后,当前遇到如下问题:手动触发部署后,日志仅输出到镜像上传成功就终止,无任何错误说明,但部署标记为失败。
部署日志
Jan 7 11:49:44 AM ==> Cloning from https://github.com/KateClysm/BackEnd-Portfolio-PPA... Jan 7 11:49:48 AM ==> Checking out commit d2982e0e149b6e90b51265bcb926c1c602f4bc66 in branch main Jan 7 11:49:53 AM #1 [internal] load .dockerignore Jan 7 11:49:53 AM #1 transferring context: 2B done Jan 7 11:49:53 AM #1 DONE 0.0s Jan 7 11:49:53 AM Jan 7 11:49:53 AM #2 [internal] load build definition from Dockerfile Jan 7 11:49:53 AM #2 transferring dockerfile: 205B done Jan 7 11:49:53 AM #2 DONE 0.0s Jan 7 11:49:53 AM Jan 7 11:49:53 AM #3 [internal] load metadata for docker.io/library/amazoncorretto:19-alpine-jdk Jan 7 11:49:53 AM #3 ... Jan 7 11:49:53 AM Jan 7 11:49:53 AM #4 [auth] library/amazoncorretto:pull token for registry-1.docker.io Jan 7 11:49:53 AM #4 DONE 0.0s Jan 7 11:49:53 AM Jan 7 11:49:53 AM #3 [internal] load metadata for docker.io/library/amazoncorretto:19-alpine-jdk Jan 7 11:49:54 AM #3 DONE 1.0s Jan 7 11:49:54 AM Jan 7 11:49:54 AM #5 [1/2] FROM docker.io/library/amazoncorretto:19-alpine-jdk@sha256:46be4d85ae0f45ee7144fcb0d785907b960ee273f6e3d759b6e0c39bf03e5387 Jan 7 11:49:54 AM #5 resolve docker.io/library/amazoncorretto:19-alpine-jdk@sha256:46be4d85ae0f45ee7144fcb0d785907b960ee273f6e3d759b6e0c39bf03e5387 0.1s done Jan 7 11:49:54 AM #5 DONE 0.1s Jan 7 11:49:54 AM Jan 7 11:49:54 AM #6 [internal] load build context Jan 7 11:49:55 AM #6 transferring context: 43.14MB 1.9s done Jan 7 11:49:55 AM #6 DONE 1.9s Jan 7 11:49:55 AM Jan 7 11:49:55 AM #5 [1/2] FROM docker.io/library/amazoncorretto:19-alpine-jdk@sha256:46be4d85ae0f45ee7144fcb0d785907b960ee273f6e3d759b6e0c39bf03e5387 Jan 7 11:49:55 AM #5 extracting sha256:ca7dd9ec2225f2385955c43b2379305acd51543c28cf1d4e94522b3d94cce3ce 0.6s done Jan 7 11:49:57 AM #5 extracting sha256:b953496144a820faf3b5884ddfc542a98cc07f6a24635f26015e7c8d0ef19efe Jan 7 11:50:00 AM #5 extracting sha256:b953496144a820faf3b5884ddfc542a98cc07f6a24635f26015e7c8d0ef19efe 3.4s done Jan 7 11:50:00 AM #5 DONE 6.4s Jan 7 11:50:00 AM Jan 7 11:50:00 AM #7 [2/2] COPY target/mm-0.0.1-SNAPSHOT.jar mm-0.0.1-SNAPSHOT.jar Jan 7 11:50:00 AM #7 DONE 0.1s Jan 7 11:50:00 AM Jan 7 11:50:00 AM #8 exporting to oci image format Jan 7 11:50:00 AM #8 exporting layers Jan 7 11:50:02 AM #8 exporting layers 2.0s done Jan 7 11:50:02 AM #8 exporting manifest sha256:64870a046ea759b329252fecb6255049c33b7b4372b0d30cb785c7fed8d1fb60 done Jan 7 11:50:02 AM #8 exporting config sha256:36ccfedfb44c6ca4b7ef9bd3b86498a12a33d4daa9eb7b353c2c540d0cf726b4 done Jan 7 11:50:10 AM #8 DONE 10.2s Jan 7 11:50:10 AM Jan 7 11:50:10 AM #9 exporting cache Jan 7 11:50:18 AM #9 DONE 7.3s Jan 7 11:50:19 AM Pushing image to registry... Jan 7 11:50:24 AM Upload succeeded Jan 7 11:50:24 AM DONE
Dockerfile内容
FROM amazoncorretto:19-alpine-jdk MAINTAINER emaaristimuno COPY target/mm-0.0.1-SNAPSHOT.jar mm-0.0.1-SNAPSHOT.jar ENTRYPOINT ["java","-jar","/mm-0.0.1-SNAPSHOT.jar"]
注:使用NetBeans开发
POM文件内容
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.portfolio</groupId> <artifactId>mm</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mm</name> <description>Portfolio Maria Monchot</description> <properties> <java.version>19</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
application.properties配置
#测试环境 #spring.datasource.url=jdbc:mysql://localhost:3306/backendmm?useSSL=false&serverTimezone=UTC #spring.datasource.username=root #spring.datasorce.password= #生产环境 spring.datasource.url=jdbc:mysql:urlfrommydatabase spring.datasource.username=userfrommydatabase spring.datasorce.password=passwordfrommydatabase #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.show-sql=true spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect #spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=none spring.datasource.hikari.maximum-pool-size=2 #JWT jwt.secret = secret jwt.expiration = 3600
本地JAR文件路径:C:\Users\Katerina\Desktop\Proyecto Portfolio PPA\BackEnd-Portfolio-PPA\target\mm-0.0.1-SNAPSHOT.jar
排查方向
- 日志缺失:当前日志仅展示镜像构建和上传流程,容器启动阶段日志未输出,需前往Render平台的「服务日志」板块查看启动失败的具体报错
- 配置拼写错误:
application.properties中spring.datasorce.password存在拼写错误,应改为spring.datasource.password,此错误会导致数据库密码读取失败,无法建立连接 - 数据库URL格式错误:生产环境的
spring.datasource.url格式不正确,正确格式应为jdbc:mysql://<数据库主机>:<端口>/<数据库名>?useSSL=true&serverTimezone=UTC,需替换为Render提供的真实数据库地址 - Java版本兼容性:Spring Boot 2.6.7官方仅支持Java 8、11、17,使用Java 19可能存在兼容性问题,建议将Java版本降至17,或升级Spring Boot至支持Java 19的版本(如3.x系列)
- 端口配置:Render部署Docker服务需指定端口,Spring Boot默认使用8080端口,需在Render服务设置中将端口设为8080,或在
application.properties中添加server.port=${PORT:8080}以适配Render的环境变量端口 - 数据库连通性:确认Render上的MySQL数据库已正确创建,网络权限开放,且数据库用户拥有足够的读写权限
内容的提问来源于stack exchange,提问作者Maria Monchot
相关产品推荐
相关产品推荐

