Dockerfile 介紹
什麼是Dockerfile
Dockerfile
是一個用來將你的應用構建為docker
映象的文字檔案,文字中的內容是一條一條的指令,這些指令的集合在docker
引擎中執行,最終構建出你的應用的docker
映象。
準備
需要小夥伴們先在本地或者伺服器上安裝docker
命令介紹
先來看一個簡單的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"]
FROM
:需要構建映象的專案所需要依賴的基礎映象
,SpringBoot
專案是跑在JDK
之上的
VOLUME
:定義匿名資料卷,容器在執行的時候,會將資料寫入到這個資料卷中,這裡設定為一個臨時目錄
ADD
:將target目錄下的springboot-docker-0.0.1-SNAPSHOT.jar
包新增到docker
容器中,並將名稱進行修改為docker.jar
RUN
:執行後其後面的命令
ENTRYPOINT
;在容器啟動之前的預定義執行指令碼命令
建立專案
下面我們,建立一個簡單的SpringBoot
專案來驗證一下我們上文所說的。
加入依賴
開啟的你的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檔案
在你的專案根目錄建立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