Docker无法找到OpenJDK

时间:2016-08-25 19:29:49

标签: docker java-8 openjdk

我第一次尝试使用Docker,并且正在尝试使用Spring Boot Web应用程序在Docker容器中运行。我正在构建应用程序(它打包成一个独立的jar)和然后将它添加到Docker镜像(这就是我想要的)。

我按照OpenJDK Docker base image的说明进行操作。您可以在此SSCCE找到我的Bootup repo on GitHub,其自述文件包含重现我所看到的内容的所有说明。但基本上是:

  • 我将网页应用构建成一个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的输出:

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

1 个答案:

答案 0 :(得分:3)

我使用这个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开发人员,我不知道为什么它会忽略你的配置需要它从端口9200启动,因为你的应用程序从端口8080开始,但从docker的角度来看,一切都在使用我的配置和我可以通过localhost:8080

从我的浏览器连接到该应用程序

这里的截图: Screenshot

此外,由于您发布了github repo,我建议您修改自述文件,以便用户可以从docker开始gradle,而不需要运行此一次命令的主机中的Java环境:

docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp openjdk:8 /usr/src/myapp/gradlew clean build