docker运行最简单的springboot服务

docker运行最简单的springboot服务

摘要

springboot docker

别人已经封装好了docker

docker run -itd -p 8080:8080 saturnism/spring-boot-helloworld-ui

看源码Dockerfile

saturnism/spring-boot-helloworld-ui对应的Dcokerfile内容如下 (https://github.com/saturnism/spring-boot-docker/blob/master/examples/helloworld-ui/Dockerfile)

FROM saturnism/spring-boot:1.2.3-jdk-8-groovy-2.4.3-onbuild

就一行没什么看的,继续看引用的 saturnism/spring-boot:1.2.3-jdk-8-groovy-2.4.3-onbuild

源码如下 (https://github.com/saturnism/spring-boot-docker/blob/master/groovy-onbuild/Dockerfile)

FROM java:8
MAINTAINER Ray Tsang <saturnism@gmail.com>

ENV SRC_DIR /app/src
ENV BIN_DIR /app/bin
ENV GROOVY_VERSION 2.4.3
ENV SPRINGBOOT_VERSION 1.2.3.RELEASE

RUN curl -s get.gvmtool.net | bash
RUN bash -c "source $HOME/.gvm/bin/gvm-init.sh && gvm install groovy $GROOVY_VERSION && gvm install springboot $SPRINGBOOT_VERSION"

RUN mkdir -p $SRC_DIR
WORKDIR $SRC_DIR

EXPOSE 8080

CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/bin/app.jar"]

ONBUILD RUN mkdir -p $BIN_DIR
ONBUILD ADD . $SRC_DIR
ONBUILD RUN bash -c "source $HOME/.bashrc && spring jar $BIN_DIR/app.jar $SRC_DIR"

因为spring-boot-helloworld-ui引用了spring-boot:1.2.3-jdk-8-groovy-2.4.3-onbuild
所以ONBUILD指令只有当spring-boot:1.2.3-jdk-8-groovy-2.4.3-onbuild被其他Dockerfile FROM的时候才会执行.
另外RUN是在Build时执行.CMD是在run时执行.

所以已上命令的执行顺序就是先RUN准备好spring环境,再ONBUILD用spring cli打包.
最后才是CMD java -jar 运行.