Heroku上Micronaut服务启动即崩溃问题排查求助
Micronaut服务在Heroku上启动后立即退出,本地Docker运行正常
我尝试通过heroku.yml构建并部署Micronaut服务器到Heroku,但进程启动后立刻退出。本地Docker镜像运行完全正常,但Heroku日志没有额外输出,根本找不到问题所在。
相关配置文件
Dockerfile
FROM node as build-frontend WORKDIR /app COPY frontend/myfrontend/package.json . COPY frontend/myfrontend/public ./public COPY frontend/myfrontend/src ./src RUN npm install . RUN npm run build FROM gradle:6.8.2-jre11 AS build-env # Set the working directory to /home WORKDIR /home COPY --chown=gradle:gradle backend ./ COPY --from=build-frontend /app/build /home/src/main/resources/public # Compile the application. RUN ./gradlew assemble FROM openjdk:11.0.10-jre-slim-buster # Set the working directory to /home WORKDIR /home # Copy the compiled files over. COPY --from=build-env /home/build/libs/myjar-0.1-all.jar /home/myjar.jar # Starts the java app # Using EntryPoing to pass env. variables as describe in this article ENTRYPOINT exec java -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0 -noverify -XX:+AlwaysPreTouch -jar myjar.jar
heroku.yml
setup: addons: - plan: heroku-postgresql as: DATABASE build: docker: web: Dockerfile run: web: "exec java -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0 -noverify -XX:+AlwaysPreTouch -jar myjar.jar"
Micronaut application.yml
micronaut: application: name: mypackage router: static-resources: default: enabled: true paths: - classpath:public mapping: /** server: port: ${PORT:8080} cors: enabled: true datasources: default: driverClassName: org.postgresql.Driver dbUrl: jdbc:postgresql://mydbhost.com:port/dbname?sslmode=require dbUsername: dbuser dbPassword: dbpasswd scan: packages: mypackage netty: default: allocator: max-order: 3
本地与Heroku运行对比
本地执行docker build -t test-image:latest .和docker run -p 80:8080 test-image:latest可以正常连接,容器内的Micronaut服务运行稳定,就算启动失败也会在日志中明确显示原因。但通过GitHub部署到Heroku后,日志仅输出以下内容:
2023-01-09T22:25:50.145942+00:00 heroku[web.1]: Starting process with command `/bin/sh -c exec\ java\ -XX:\+UseContainerSupport\ -XX:MaxRAMPercentage\=80.0\ -noverify\ -XX:\+AlwaysPreTouch\ -jar\ myjar.jar` 2023-01-09T22:25:51.381760+00:00 heroku[web.1]: Process exited with status 0 2023-01-09T22:25:51.439962+00:00 heroku[web.1]: State changed from starting to crashed
已尝试的排查步骤
- 本地连接Heroku PostgreSQL附加组件,运行正常;
- 尽可能简化构建流程,排除构建环节问题;
- 移除端口默认值,本地设置
export PORT=8080后运行正常; - 修改
heroku.yml硬编码数据库配置并指定端口,仍无效果,日志依旧没有堆栈跟踪或额外输出信息。
目前无法确定Heroku上服务启动即退出的具体原因,请求帮助排查。
内容的提问来源于stack exchange,提问作者Kilbo
相关产品推荐
相关产品推荐

