Dockerfile实战-基于dockerfile部署SpringBoot应用
本文主要介绍,通过编写Dockerfile文件,将SpringBoot的应用部署到docker容器中,并实现对外访问;如果有对Dockerfile文件不了解的同学,请看这篇教程 Dockerfile命令详解
环境准备
- Java的web服务运行需要Java环境,所以在Dockerfile文件中我们需要先搭建Java的环境,这里需要用到JDK的安装包,JDK8下载 :https://www.oracle.com/java/technologies/downloads/#java8
-
Java的应用程序,这个程序只是用来演示Dockerfile的编写,所以比较简单,一个简单的SpringBoot的程序即可。
Dockerfile 文件编写
-
编写Dockerfile文件
FROM centos:latest MAINTAINER helloguoguoyang@gmail.com # 拷贝java的程序到容器目录中 RUN mkdir /opt/web COPY web_server.jar /opt/web/ # 创建java的安装目录 RUN mkdir /usr/local/java # 拷贝jdk8到容器,使用ADD命令可以直接解压 ADD jdk-8u311-linux-x64.tar.gz /usr/local/java RUN ln -s /usr/local/java/jdk1.8.0_311 /usr/local/java/jdk # 设置环境变量 ENV JAVA_HOME=/usr/local/java/jdk ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar ENV PATH=${JAVA_HOME}/bin:$PATH # 部署JavaWeb程序 EXPOSE 8080 # 切换WORKDIR WORKDIR /opt/web/ ENTRYPOINT ["nohup","java","-jar","web_server.jar>webserver.log","&"]
-
编译Dockerfile
运行 docker build -f Dockerfile -t webserver:v1 .
docker build : 指令用来编译Dockerfile文件,默认的情况下 docker build 会在当前的上下文目录中查找Dockerfile文件进行编译
-f : 参数可以用来指定Dockerfile文件
-t : 参数用来设置镜像的名字及标签
注意 : docker build -f Dockerfile -t webserver:v1 .的最后有一个 . 这个表示当前的构建环境的上下文,Dockerfile中的资源文件都默认成这个上下文的目录中查找,然后拷贝到容器当中去;也可以指定目录。
如果不带上 ”.“,或者指定的上下文目录不对,在编译时则会出现以下错误🙅
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QhCSXNxe-1639485039057)(/Users/pristine/Desktop/docker_build_with.png)]
-
查看编译的镜像
docker image ls 或者 docker images
运行webserver 程序
- 目前,通过Dockerfile文件完成webserver程序运行环境的搭建,并没有完成webserver程序完成部署。
docker ps -a 查看所有的容器,并没有webserver
- 运行webserver服务
docker run -d --name webserver webserver:v1
访问webserver服务,返回的结果与本地运行的一致。
curl http://127.0.0.1:8080/hello