idea通过dockerfile发布时报错:
[0.015s][warning][os,thread] Failed to start thread “VM Thread” - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached.
2024-02-21T00:34:59.555333000Z Error occurred during initialization of VM
2024-02-21T00:34:59.555577000Z Cannot create VM thread. Out of system resources.
先上解决方案:
方案有两种:
1.Docker环境升级或降级: 如果是换服务器,新的Docker环境要兼容旧项目,里面是空的,直接重装Docker环境和旧服务器版本相同,别犹豫。
2.Dockerfile环境升级或降级: 旧dockerfile升级到新Docker环境,去官网找新的依赖。
以我的为例:
#此处Java17与Docker环境不兼容
#FROM eclipse-temurin:17
#升级到19可以解决
FROM openjdk:19-rc-jdk-bullseye
MAINTAINER 317589916@qq.com
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
RUN mkdir -p /home/project
WORKDIR /home/project
EXPOSE 8888
ADD ./application.jar ./application.jar
CMD java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar application.jar --spring.profiles.active=dev
原因分析:
从报错信息来看是一个Java的报错,如果不是知道旧项目运行正常这么理解下去就跑偏了,所以直接定位到环境问题。
备注:Dockerfile是旧项目时开发写的,直接复制到新项目中。服务器的Docker环境是新装的
所以问题就来了,dockerfile中的镜像太旧,与新版本的Docker环境不兼容,所以报错。将FROM eclipse-temurin:17 升级为FROM openjdk:19-rc-jdk-bullseye 完成。
所以各位如果遇到这类问题没有头绪,可以考虑版本兼容问题。