在kubernetes容器中运行Java应用程序不起作用

时间:2019-01-14 18:25:36

标签: docker kubernetes dockerfile kubectl

我正在尝试在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

感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

不需要在顶部同时使用cmd和入口点命令。

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

该小脚本正在我的入口点中运行,而未配置任何cmd。