Dockerfile
是一個用來將你的應用構建爲docker
鏡像的文本文件,文本中的內容是一條一條的指令,這些指令的集合在docker
引擎中執行,最終構建出你的應用的docker
鏡像。java
須要小夥伴們先在本地或者服務器上安裝docker
git
docker安裝看這篇就夠了github
先來看一個簡單的Dockerfile
文件web
FROM hub.c.163.com/library/java:8 VOLUME /tmp ADD target/springboot-docker-0.0.1-SNAPSHOT.jar docker.jar RUN bash -c 'touch /docker.jar' ENTRYPOINT ["java","-jar","/docker.jar"]
FROM
:須要構建鏡像的項目所須要依賴的基礎鏡像
,SpringBoot
項目是跑在JDK
之上的spring
VOLUME
:定義匿名數據卷,容器在運行的時候,會將數據寫入到這個數據卷中,這裏設置爲一個臨時目錄docker
ADD
:將target目錄下的springboot-docker-0.0.1-SNAPSHOT.jar
包添加到docker
容器中,並將名稱進行修改成docker.jar
shell
RUN
:執行後其後面的命令瀏覽器
ENTRYPOINT
;在容器啓動以前的預約義執行腳本命令springboot
下面咱們,建立一個簡單的SpringBoot
項目來驗證一下咱們上文所說的。bash
打開的你的idea
建立一個SpringBoot
項目,咱們只須要在pom.xml
中加上以下依賴便可
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
在項目目錄項建立一個controller
包,建立一個DockerFileController
類,編寫以下接口
/** * @author:triumphxx * @Date:2020/8/1 * @Time:4:53 下午 * @微信公衆號:北漂碼農有話說 * @網站:http://blog.triumphxx.com.cn * @GitHub https://github.com/triumphxx **/ @RestController public class DockerFileController { @RequestMapping("/docker") public String dockerFileRun(){ System.out.println("dockerfile測試"); return "DockerFile"; } }
在你的項目下使用maven
將項目打成一個jar
包,這時項目的target
目錄下就會有一個springboot-docker-0.0.1-SNAPSHOT.jar
包。
在你的項目根目錄建立Dockerfile
文件,下面的文件內容也就是咱們文章開頭的那個文件。
FROM hub.c.163.com/library/java:8 VOLUME /tmp ADD target/springboot-docker-0.0.1-SNAPSHOT.jar docker.jar RUN bash -c 'touch /docker.jar' ENTRYPOINT ["java","-jar","/docker.jar"]
以上工做完成後,須要將項目打包爲docker
鏡像。
docker build -f /路徑/Dockerfile . # 個人具體路徑 # docker build -f /Users/wangyupeng/IdeaProjects/springboot-docker/Dockerfile .
細心的小夥伴可能發現這一行的命令後面有一個
.
,那麼這個點是什麼呢?它是上下文路徑,是指 docker 在構建鏡像,有時候想要使用到本機的文件(好比複製),docker build 命令得知這個路徑後,會將路徑下的全部內容打包。全部咱們在構建鏡像的時候上下文路徑不要放其餘無用的文件。
執行完構建命令後,控制檯輸出以下日誌表示構建成功,而且docker
會給鏡像分配一個ID
這時執行以下命令查看是否有咱們的鏡像產生
docker images
小夥伴們能夠看到,鏡像已經構建完成了,可是鏡像的
REPOSITORY
和TAG
是空的,那麼咱們須要在執行一條命令來指定這個倆個屬性
執行以下命令指定鏡像的REPOSITORY
和TAG
docker build -t springboot-docker/springboot-docker:1.0 .
再次執行docker images
,能夠看到這時的鏡像已經完整的呈如今你的面前
鏡像已經構建完成了,咱們須要將它運行起來,驗證正確性,執行以下命令,命令中的具體參數,做者就不一一介紹了 這篇文章有介紹
docker run -d -p8080:8080 springboot-docker/springboot-docker:1.0 # 或者 docker run -d -p8080:8080 8bf227f4fed9
首先執行以下命令,查看執行的docker
容器
docker ps
這是咱們就可以看到docker
容器的ID
,執行以下命令,查看執行日誌
docker logs
在瀏覽器輸入http://localhost:8080/docker
,若是瀏覽器頁面返回的內容是DockerFile
,表示項目的鏡像運行正常
好啦,小夥伴們,咱們介紹了,什麼是Dockerfile
以及如何將本身的項目構建爲docker
鏡像,但願對你有所幫助。案例已分享到本人的GitHub
GitHub