Docker找不到OpenJDK
我第一次尝试使用Docker,并试图让Spring Boot web应用程序在Docker容器中运行。 我正在构build应用程序(将其打包成一个独立的jar), 然后将其添加到Docker镜像(这正是我想要的)。
我在这里按照来自OpenJDK Docker基础镜像的指示。 你可以在GitHub上的Bootup repo上find我的SSCCE ,它的README有所有的指令来重现我所看到的。 但基本上:
- 我把这个web应用程序构build成一个jar包
- 运行
docker build -t bootup .
哪个成功 - 运行
docker run -it --rm --name bootup bootup
,它给了我下面的错误,然后退出
错误:
/bin/sh: 1: /bin/sh: [java,: not found
据Google Gods介绍 ,这曾经是Oracle JDK镜像的一个问题,但OpenJDK镜像不应该出现这种情况。
看着我的Dockerfile(这也是在GitHub回购),任何人都可以发现我要去的地方:
FROM openjdk:8 RUN mkdir /opt/bootup ADD build/libs/bootup.jar /opt/bootup WORKDIR /opt/bootup ENTRYPOINT ['java', '-jar', 'bootup.jar'] CMD ['']
提前致谢!
更新 :
docker ps
输出docker ps
:
CONTAINER ID IMAGE COMMAND CREATED 16bde964ff6b bootup "/bin/sh -c 'java -ja" 2 days ago STATUS PORTS NAMES Up 14 seconds 0.0.0.0:8080->8080/tcp bootup
我已经使用这个dockerfile工作正常:
FROM openjdk:8 RUN mkdir /opt/bootup ADD build/libs/bootup.jar /opt/bootup WORKDIR /opt/bootup EXPOSE 8080 ENTRYPOINT java -jar bootup.jar
这个commad运行得很好:
docker run -it -p 8080:8080 --name bootup bootup
我不是Java开发人员,我不知道为什么它忽略了你的configuration,要求它启动端口9200,因为你的应用程序启动端口8080,但从docker的angular度来看,一切正在与我的configuration,我可以连接从本地主机:8080上的浏览器到应用程序
这里的截图:
另外,既然你发布了你的github仓库,我build议你修改自述文件,这样用户就可以在运行这个一次性命令的主机上不需要java环境就可以从Docker启动仓库:
docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp openjdk:8 /usr/src/myapp/gradlew clean build