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包或配置文件,重启容器即可。

浙公网安备 33010602011771号