Dockerfile你值得擁有

Dockerfile 介紹

什麼是Dockerfile

Dockerfile是一個用來將你的應用構建爲docker鏡像的文本文件,文本中的內容是一條一條的指令,這些指令的集合在docker引擎中執行,最終構建出你的應用的docker鏡像。java

準備

須要小夥伴們先在本地或者服務器上安裝dockergit

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.jarshell

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文件

在你的項目根目錄建立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

小夥伴們能夠看到,鏡像已經構建完成了,可是鏡像的REPOSITORYTAG是空的,那麼咱們須要在執行一條命令來指定這個倆個屬性

配置鏡像

執行以下命令指定鏡像的REPOSITORYTAG

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

相關文章
相關標籤/搜索