支付宝红包
京东盲盒抽奖
幸运转盘
秒杀
自营热卖
支付宝红包

使用Dockerfile构建一个简单的SpringBoot镜像

白月光 1年前   阅读数 158 0

在足球还叫蹴鞠的时候,我就写了一篇有关于dockerfile的文章,本来想着靠那篇文章火一把,从此脱离开发仔的身份,专心写文。结果很意外,这篇Dockerfile指令详解的文章竟然访问量比我的头发还少。甚至好长一段时间我都忘了它的存在,该死!

在经过了长时间的思考后,我终于知道为什么这篇文章会不火了,我他妈没买量!!!

好吧,上面扯那么多其实就是为了植入我那篇过气的文章。下面进入主题。

在我们想把自己的程序打包成镜像,并运行在docker容器中的时候我们应该怎么做呢?

1.编写Dockerfile文件。

不了解Dockerfile指令的请跳转链接。

#指定基础镜像(一般指定程序所依赖的环境)
#本例子是构建SpringBoot所以我指定的jdk环境变量
FROM openjdk:11

#添加维护者信息
MAINTAINER author:edison
MAINTAINER mail:edisonlil@163.com

#将./hello-world.jar添加到容器的/opt目录中
COPY ./hello-world.jar /opt

#指定dockerfile的命令在哪个目录下执行
WORKDIR /opt

#指定容器和外界交互的端口
EXPOSE 80

#容器运行后执行的命令(该命令在WORKDIR指定的工作目录下执行)
#注意:多个CMD指令只有最后一个会生效
CMD java -jar hello-world.jar

#在构建镜像时执行的命令
#我这边用它来打印java的环境变量
RUN java -version

#添加该镜像的元数据
LABEL version="1.0" description="这是一个Web服务器" by="edc"

2.将你的Dockerfile文件和你的jar包放在同一个目录里

注意:Dockerfilejar包最好存放在一个创建好的空目录里,不要放在/目录中,因为构建是由Docker守护程序而不是CLI运行的。构建过程要做的第一件事是将整个上下文(递归)发送到守护程序。在大多数情况下,最好以空目录作为上下文,并将Dockerfile保留在该目录中。仅添加构建Dockerfile所需的文件。所以如果你要是将Dockerfile放在/目录构建,你就是在犯罪,懂吗?
在这里插入图片描述

由于我上面dockerfile的例子hello-world.jar是放在./目录下也就是和Dockerfile的同一目录,如果说你的jar包不和dockerfile同一目录的话那么COPY指令的那个./hello-world.jar就要换成你jar包存放的路径。


3.在Dockerfile所在的目录下运行docker build --tag web:latest .命令

不了解docker build命令的请跳转链接。

注意:docker build 后面要加.参数,代表着构建当前目录的Dockerfile文件。而--tag是给镜像取一个名字,并指定镜像的版本号,此时构建好的镜像名字为web,版本号为latest
在这里插入图片描述
可以看到执行了docker build .后除了打印指令的执行信息之外还在8/9行中打印了容器里的JDK环境变量,这是因为我使用RUNz执行了java -version命令。


4.我们执行一下docker images命令查看我有没有我们刚刚构建好的镜像
在这里插入图片描述
这时候表示镜像构建成功。


5.使用docker run通过构建好的新镜像跑一个容器
在这里插入图片描述


6.访问一下
在这里插入图片描述

成功!!!

原创文章 34 获赞 14 访问量 4653

注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: