docker构建springboot应用镜像与部署

准备

  • 本示例是基于centos镜像构建的,所以需要准备一个jdk安装包,这里我用的是jdk-8u201-linux-x64.tar.gz
  • springboot打包后的jar包
  • springboot应用的配置文件,application.yml。这个文件是方便后面挂载出来用的。

编写Dockerfile文件

创建名为Dockerfile的文件

vim Dockerfile

Dockerfile的内容如下

FROM centos:7

ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#安装jdk8
RUN mkdir /usr/local/java
ADD jdk-8u201-linux-x64.tar.gz /usr/local/java
RUN ln -s /usr/local/java/jdk1.8.0_201 /usr/local/java/jdk
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

#应用运行,最终的ENTRYPOINT就是在容器运行时执行的命令
ENV JAVA_OPTS=""
ENV PARAMS="--spring.config.location=/application.yml"
ADD app.jar /app.jar
ADD application.yml /application.yml

ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]

文件说明

  • 可以使用其他现成的jdk镜像代替centos镜像,文件会更精简
  • ENV PARAMS="--spring.config.location=/application.yml" 是用来挂载配置文件的,这样部署后,如果修改了配置文件,只需要在挂载目录替换掉配置文件重启容器即可,避免重复创建容器的工作。
    同理也可以将其他可能用到的文件等挂载出来,但前提记得在Dockerfile文件中将对应文件利用ADD命令添加到镜像中。

创建镜像

进入Dockerfile所在的目录,执行如下命令

docker build -t app_image:1.0 .

说明

  • 不要忘记命令最后面的点“.”
  • -t 用来声明镜像的名字和标签,如果只填写了镜像名字,则标签默认为latest

创建容器

docker run -itd --name app -p 8080:8080 -v /usr/local/docker/app/app.jar:/app.jar -v /usr/local/docker/app/application.yml:/application/yml app_image:1.0

说明

  • -p 挂载的容器内的端口为8080,对应配置文件中声明的端口号
  • -v 将打包后的jar包挂载出来,application.yml也是。
    容器内目录对应的是在Dockerfile文件中声明的目标目录。
    挂载的好处是日后重新打包发布,只需要替换掉原来的jar包或配置文件,重启容器即可。
posted @ 2021-09-13 10:44  胖头鹅  阅读(337)  评论(0)    收藏  举报