【Docker】(6)---Dockerfile文件
2018-11-08 08:52
771 查看
springboot项目打包镜像中的Dockerfile文件
在讲Dockerfile文件之前应该先讲下maven的一个插件叫:
dockerfile-maven-plugin。他们是组合一起用的
一、dockerfile-maven-plugin
该maven插件可以实现由java源代码直接到docker镜像,配置了dockerfile-maven-plugin插件的maven工具就像是一个管道,一端输入Java源代码, 另一端直接输出docker镜像。在dockerfile-maven-plugin插件出现之前,还有一个maven插件是docker-maven-plugin,是由同一个作者创造,两个 插件的设计思想是有差别的,前者需要独立编写Dockerfile文件,后者允许没有Dockerfile文件,所有的docker相关配置都写在pom文件的plugin中,这样使maven插件显得很笨重,并且如果脱离了这个maven插件还得重写编写Dockerfile,不够灵活。
因此,推荐使用maven插件:
dockerfile-maven-plugin。
查看pom中插件
<!--指定一个名字而已~--> <properties> <docker.image.prefix>xuxiaoxiao</docker.image.prefix> </properties> <build> <finalName>eureka-server</finalName> <plugins> <!--Docker打包镜像 插件--> <plugin> <!--三个坐标定位dockerfile插件--> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.7</version> <configuration> <!--这里指定打包镜像的名称--> <repository>${docker.image.prefix}/${project.artifactId}</repository> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build>
二、Dockerfile文件
先贴出,上一篇博客Dockerfile文件完整版,再来一个一个分析。
FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"]
1、
FORM,这是引入一个父镜像,在此基础上进行添加只读层。之前我写过,镜像可以理解成由一层层只读层组成,FORM下面的命令,可以理解就是在已有的只读层,添加只读层。FORM可以有多个,但最上面的一定是FROM命令。
2、
VOLUME,配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的。
通俗解释:默认情况下,容器不使用任何 volume,此时,容器的数据被保存在容器之内,它只在容器的生命周期内存在,会随着容器的被删除而被删除。
因为如果你不想在容器删除后,容器的数据也被删除,那么就可以指定持久化目录。它被设计用来保存数据,而不管容器的生命周期。因此,当你删除一个容器时,Docker 肯定不会自动地删除一个volume。
3、
ARG, 设置编译镜像时加入的参数。 这里的JAR_FILE就是maven插件中的
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
4、
COPY,只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点。
5、
ENTRYPOINT容器启动时执行的命令。这里就是java -jar app.jar
当然Dockerfile的命令说明官网有标准文档,以后有需要会再回过来查看官方文档。
[Dockerfile官方文档] (https://docs.docker.com/engine/reference/builder/#usage)
参考
1、理解Docker(8):Docker 存储之卷(Volume)
如果一个人充满快乐,正面的思想,那么好的人事物就会和他共鸣,而且被他吸引过来。同样,一个人老带悲伤,倒霉的事情也会跟过来。 ——在自己心情低落的时候,告诫自己不要把负能量带给别人。(大校8)
相关文章推荐
- docker-maven-plugin 完全免Dockerfile 文件
- 一个典型的docker配置文件(Dockerfile.cuda-8.0)
- 第4章 Maven插件读取DockerFile文件构造镜像
- docker镜像制作之Dockerfile文件---snort
- 使用Docker Toolbox 创建v1.12.6版的Docker虚拟机的方法-注意正确使用本地文件 file:参数的路径名
- ASP.NET CORE做的网站运行在docker上(不用dockerfile文件部署)
- 一个神奇的文件Dockerfile
- docker-maven-plugin 完全免Dockerfile 文件
- Dockerfile文件说明
- ASP.NET CORE做的网站运行在docker上(不用dockerfile文件部署)
- nodejs 版本dockerfile 文件制作,和常用命令
- Docker-3-Dockerfile构建文件
- Docker定制容器镜像(利用Dockerfile文件)
- Docker学习系列(五):Dockerfile文件
- Dockerfile 文件的编写
- 6.0docker Dockerfile文件
- docker镜像制作之Dockerfile文件---hadooop伪分布式
- Dockerfile文件
- Dockerfile文件编写官方文档
- Dockerfile文件的书写规则