SpringBoot项目通过maven打成jar包后;如何利用Docker打成镜像
一、镜像、容器相关知识的概述
-
Docker 镜像
docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,
还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等);
镜像不包含任何动态数据,其内容在构建之后也不会被改变。
-
Docker 容器
Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,
然后发布到任何安装了docker引擎的服务器上(包括流行的Linux机器、windows机器),
也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。
几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
-
DockerFile
1.什么是dockerfile
Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。 可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。 例:docker build -f /path/to/a/Dockerfile
2.dockerfile基本结构
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,
’#’ 为 Dockerfile 中的注释。
3.docker文件说明
Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。
一个声明以#字符开头则被视为注释。
可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。
dockerfile 指令图解:
二、上传jar包并创建DockerFile
1.利用xftp连接自己的服务器将打包好的项目上传到指定服务器目录上
[root@songweipeng java]# ll total 141716 -rw-r--r-- 1 root root 206 Sep 22 11:40 Dockerfile -rw-r--r-- 1 root root 145106991 Sep 22 11:14 gcdp-market-bid-process-service-1.0.0-SNAPSHOT.jar
2.编写dockerFile: vim DockerFile
# 基于哪个镜像,需要用一个已有的镜像做载体来创建,这里我使用的java8镜像,如果大家的docker镜像中没有java8,它就会自动去下载 FROM java:8 # 将本地文件夹挂载到当前容器,指定/songwp/project/java目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录 VOLUME /songwp/project/java # 添加自己的项目到 gcdp-market-bid-process-service-1.0.0-SNAPSHOT.jar中这里我是取了gcdp-market-bid-process-service.jar的名字,这个名字可以随便取的,只要后面几行名字和这个统一就好了 ADD gcdp-market-bid-process-service-1.0.0-SNAPSHOT.jar gcdp-market-bid-process-service.jar # 开放9601端口 EXPOSE 9601 # ENTRYPOINT指定容器运行后默认执行的命令 CMD java -jar gcdp-market-bid-process-service.jar
3.构建镜像
docker build -f ./Dockerfile -t gcdp-market-bid-process-service:latest .
4.运行并查看日志
# 运行镜像 docker run -d -p 9601:9601 gcdp-market-bid-process-service:latest # 查看运行容器的id和状态 docker ps -a # 查看容器日志 docker logs 2044230149c1
古今成大事者,不唯有超世之才,必有坚韧不拔之志!