我第一次尝试使用Docker,并且正在尝试使用Spring Boot Web应用程序在Docker容器中运行。我正在构建应用程序(它打包成一个独立的jar)和然后将它添加到Docker镜像(这就是我想要的)。
我按照OpenJDK Docker base image的说明进行操作。您可以在此SSCCE找到我的Bootup repo on GitHub,其自述文件包含重现我所看到的内容的所有说明。但基本上是:
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
答案 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
从我的浏览器连接到该应用程序此外,由于您发布了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