Docker can';找不到OpenJDK

Docker can';找不到OpenJDK,docker,java-8,openjdk,Docker,Java 8,Openjdk,我第一次用Docker做实验,并试图让SpringBootWeb应用程序在Docker容器中运行。我正在构建应用程序(打包到一个自包含的jar中),然后将其添加到Docker映像中(这正是我想要的) 我是按照这里的指示来的。你可以在这里找到我的自述文件,它的自述文件包含了复制我所看到的内容的所有说明。但基本上: 我将web应用程序构建到一个jar中 运行docker build-t启动。哪个成功 运行docker Run-it--rm--name bootup bootup,它给出下面的错误,

我第一次用Docker做实验,并试图让SpringBootWeb应用程序在Docker容器中运行。我正在构建应用程序(打包到一个自包含的jar中),然后将其添加到Docker映像中(这正是我想要的)

我是按照这里的指示来的。你可以在这里找到我的自述文件,它的自述文件包含了复制我所看到的内容的所有说明。但基本上:

  • 我将web应用程序构建到一个jar中
  • 运行
    docker build-t启动。
    哪个成功
  • 运行
    docker Run-it--rm--name bootup bootup
    ,它给出下面的错误,然后退出
错误:

/bin/sh: 1: /bin/sh: [java,: not found
根据,这在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

我使用此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
使用此命令运行正常:

docker run -it -p 8080:8080 --name bootup bootup
我不是java开发人员,我不知道为什么它会忽略您的配置,因为您的应用程序需要在端口9200上启动,因为您的应用程序是在端口8080上启动的,但从docker的角度来看,一切都与我的配置一起工作,并且我可以从localhost:8080上的浏览器连接到应用程序

以下是截图:

此外,由于您发布了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

你能不能先试试docker
run-it-d--rm--name-bootup-bootup
然后
docker-exec-it-bootup/bin/bash
试试docker-run-it-d--name-bootup-bootup哦,对不起,我以为你需要访问日志。看起来您需要的是使日志不进入主机的终端,这是作为守护进程运行的第一个命令完成的。对于第三个问题,您需要在运行时使用“-p 9200:9200”公开端口。假设您使用的是Docker for Mac或Docker for Windows,您可以访问localhost:9200。@smeeb您可以发布Docker ps的输出吗?@smeeb我的新配置现在可以工作了,但是您在端口9200上安装应用程序的配置被忽略,改为8080。我不是java开发人员,所以我不知道出了什么问题。码头工人一方现在工作得很好