用于在docker容器上运行spring boot应用程序的Docker文件?

时间:2017-11-05 05:00:49

标签: docker spring-boot dockerfile docker-container

您好我正在尝试使用java和maven安装一个docker镜像,并打开端口8090。

一旦容器运行,我将把我的弹簧启动项目复制到容器中,然后我将从容器中运行它。

为此我试图创建docker文件。我能够在我的本地成功构建docker镜像。

当我尝试从中创建容器时。它没有带上容器。我已经浪费了我2天的时间。

我使用了以下docker文件。

FROM ubuntu:16.04
ENV DEBIAN_FRONTEND noninteractive

ENV VERSION 8
ENV UPDATE 152
ENV BUILD 16
ENV SIG aa0333dd3019491ca4f6ddbe78cdb6d0

ENV JAVA_HOME /usr/lib/jvm/java-${VERSION}-oracle

# install jre
RUN apt-get update -qq && \
  apt-get upgrade -qqy --no-install-recommends && \
  apt-get install curl unzip bzip2 -qqy && \
  mkdir -p "${JAVA_HOME}" && \
        curl --silent --location --insecure --junk-session-cookies --retry 3 \
          --header "Cookie: oraclelicense=accept-securebackup-cookie;" \
          http://download.oracle.com/otn-pub/java/jdk/"${VERSION}"u"${UPDATE}"-b"${BUILD}"/"${SIG}"/jre-"${VERSION}"u"${UPDATE}"-linux-x64.tar.gz \
        | tar -xzC "${JAVA_HOME}" --strip-components=1 && \
  apt-get remove --purge --auto-remove -y curl unzip bzip2 && \
  apt-get autoclean && apt-get --purge -y autoremove && \
  rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN update-alternatives --install "/usr/bin/java" "java" "${JAVA_HOME}/bin/java" 1 && \
        update-alternatives --install "/usr/bin/javaws" "javaws" "${JAVA_HOME}/bin/javaws" 1 && \
        update-alternatives --set java "${JAVA_HOME}/bin/java" && \
        update-alternatives --set javaws "${JAVA_HOME}/bin/javaws"

EXPOSE 8090
ENTRYPOINT ["/bin/bash"] 

注意:我希望容器在我创建该图像的容器时运行。

docker hub中是否有任何预定义的Docker Image可以让我的工作变得简单?

如果你们给我一个码头文件来回答我的问题,我会很高兴。

我知道只有stackoverflow才能解决我的问题。提前谢谢。

2 个答案:

答案 0 :(得分:0)

使用多阶段泊坞窗构建https://docs.docker.com/engine/userguide/eng-image/multistage-build/

1)让第一个阶段拥有maven图像https://hub.docker.com/r/library/maven/并通过将项目文件复制到其中来构建项目并获取可执行jar文件

2)将jar文件复制到第二阶段,即使用https://hub.docker.com/_/openjdk/使用openjdk映像,并在CMD []

脚本中运行可执行jar文件

如果你使用阿尔卑斯版的图像,那么码头工人的容器尺寸将会非常低效和高效

答案 1 :(得分:0)

问题在于端点。必须在端点中启动服务。一旦此服务(流程)完成,容器退出。

在我的情况下,我在入口点调用了一个简单的spring boot应用程序,该应用程序监听端口8090。

挣扎超过2天后的优秀学习。