【发布时间】:2019-01-15 02:41:46
【问题描述】:
我正在尝试在 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
感谢任何帮助。谢谢
【问题讨论】:
-
你的
docker push命令也有...:v1标签吗? -
是的,你是对的!
标签: docker kubernetes dockerfile kubectl