spring-boot - Spring Boot Docker容器立即退出并显示代码1

标签 spring-boot docker jenkins exit

我的Dockerfile

FROM openjdk:8-jre-alpine
COPY ./service-0.0.1-SNAPSHOT-app.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-Xms1536m", "-Xmx1536m", "-XX:+UseConcMarkSweepGC", "-XX:CMSInitiatingOccupancyFraction=70", "-XX:+UseCMSInitiatingOccupancyOnly", "-verbose:gc", "-jar", "-Dspring.profiles.active=${ENV_NAME},${ENV_VERSION_NAME}", "/app.jar"]

我的容器运行命令
docker run -P -e ENV_NAME=dev -e ENV_VERSION_NAME=dev 7f25fb4baf24

Docker日志输出
[GC (Allocation Failure)  419456K->48832K(1520448K), 0.0318446 secs]
[GC (Allocation Failure)  468288K->85028K(1520448K), 0.2128481 secs]
[GC (CMS Initial Mark)  94900K(1520448K), 0.0051537 secs]

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v1.5.14.RELEASE)

附加信息:
  • Docker运行-ti对
  • 没有帮助
  • 上面的结果来自在Jenkins Slave上运行,但在本地计算机和我试图从
  • 迁移的另一个Jenkins实例上运行良好
  • 其他Docker容器在此Jenkins从属
  • 上运行良好
  • 即使在应用运行良好的本地运行
  • ,我也可以看到GC (Allocation Failure)

    最佳答案

    此Jenkins实例是否还有足够的RAM?

    如您的GC日志所示,堆占用了1520 MB的内存,并使用XmsXmx设置进行了配置。
    XX:ReservedCodeCacheSize默认为240 MB。

    Spring Boot嵌入式tomcat默认创建200个线程。这可以使用配置server.tomcat.threads.max=50进行配置。每个线程的默认堆栈大小为1 MB。因此所有线程将占用200 MB。如果需要,可以使用-Xss512k配置堆栈大小。

    因此,您的应用程序至少会寻求1520+240+200=1960 MB的可用内存。

    默认情况下,您的容器将对系统上的所有RAM具有可见性,并在需要内部运行的进程时尝试扩大自身。您可以通过配置XX:MaxRAM来限制Java进程可见的RAM。

    下列问题的答案也应有助于您进一步了解:
    Java using much more memory than heap size (or size correctly Docker memory limit)

    关于spring-boot - Spring Boot Docker容器立即退出并显示代码1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62181868/

    相关文章:

    json - 无法执行语句 SQL 约束 [id] 嵌套异常是 org.hibernate.exception.ConstraintViolationException

    docker - Kubernetes 和 GKE 有什么区别?

    maven - 无法解析类org.jenkinsci.plugins.workflow.support.steps.build.DownstreamFailureCause

    java - org.junit 包不存在

    java - data.sql 文件未在 Spring Boot 中将数据泵入表

    java - Spring rest Controller 从查询参数中的 zoneddatetime 中删除加号

    docker - 会用docker update命令停止容器吗?

    build - Jenkins Build Pipeline 最终状态

    java - hibernate 环境 : Audit Reader throws LazyInitializationException when trying to get revision history

    python - 使用 Docker 设置 python 开发环境(在 vscode 中进行 linting 和代码完成)