运行 java kubernetes 容器中的应用程序无法运行

Running java app in kubernetes container is not working

我正在尝试部署 运行 kubernetes POD 中的 java 应用程序,但我遇到了以下错误。 但是当我 运行 它作为 docker 容器时,它 运行 没问题。

这是 Dockerfile -

FROM openjdk:8-jre-alpine
ENV artifact mysessionmanager-1.0.0-SNAPSHOT.jar
WORKDIR /root/apps
COPY . /root/apps
EXPOSE 8080
ENTRYPOINT ["sh", "-c"]
CMD ["java -jar ${artifact}"]

docker build -t mysessionmanager .
docker tag mysessionmanager xxxx/mysessionmanager:v1
docker push xxxx/mysessionmanager
kubectl run mysessionmanager --image=xxxx/mysessionmanager:v1 --port=8080
kubectl expose deployment --type=NodePort --port=80 --target-port=8080 --name=mysessionmanager  

kubectl get deployments 显示我的部署可用状态为 0

kubectl get pods 显示我的 POD 状态为 CrashLoopBackOff

kubectl get logs mysessionmanager-5654545f8-mvt5x 什么都没显示

kubectl describe pod mysessionmanager-5654545f8-mvt5x

Reason: CrashLoopBackOff
Last State: Terminated
Reason: ContainerCannotRun
Message: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"java -jar mysessionmanager-1.0.0-SNAPSHOT.jar\": executable file not found in $PATH": unknown

但是当我使用下面的命令直接 运行 docker 图像时它工作正常。

docker run -it mysessionmanager

感谢任何帮助。谢谢

无需同时使用 cmd 和 entrypoint 命令。

在我的项目中,我创建了一个小的 bash 脚本,其中写有 java 命令。

那个小脚本是 运行 在我的入口点,没有配置任何 cmd。