Dockerfile你值得擁有

北漂碼農有話說 發表於 2020-08-01

Dockerfile 介紹

什麼是Dockerfile

Dockerfile是一個用來將你的應用構建為docker映象的文字檔案,文字中的內容是一條一條的指令,這些指令的集合在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

Dockerfile你值得擁有

檢視映象

這時執行如下命令檢視是否有我們的映象產生

docker images

Dockerfile你值得擁有

小夥伴們可以看到,映象已經構建完成了,但是映象的REPOSITORYTAG是空的,那麼我們需要在執行一條命令來指定這個倆個屬性

配置映象

執行如下命令指定映象的REPOSITORYTAG

docker  build -t springboot-docker/springboot-docker:1.0 .

Dockerfile你值得擁有

再次執行docker images,可以看到這時的映象已經完整的呈現在你的面前

Dockerfile你值得擁有

執行映象

執行命令

映象已經構建完成了,我們需要將它執行起來,驗證正確性,執行如下命令,命令中的具體引數,作者就不一一介紹了 這篇文章有介紹

docker run -d -p8080:8080 springboot-docker/springboot-docker:1.0
# 或者
docker run -d -p8080:8080 8bf227f4fed9

Dockerfile你值得擁有

檢視執行日誌

首先執行如下命令,檢視執行的docker容器

docker ps 

Dockerfile你值得擁有

這是我們就能夠看到docker容器的ID,執行如下命令,檢視執行日誌

docker logs 

Dockerfile你值得擁有

訪問介面

在瀏覽器輸入http://localhost:8080/docker,如果瀏覽器頁面返回的內容是DockerFile,表示專案的映象執行正常

小結

好啦,小夥伴們,我們介紹了,什麼是Dockerfile以及如何將自己的專案構建為docker映象,希望對你有所幫助。案例已分享到本人的GitHub GitHub

Dockerfile你值得擁有