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