【Docker】(6)---Dockerfile文件


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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM