You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:50:47