首頁
文章
隱私
  • 繁體中文
  • 简体中文
首頁
文章
隱私
  • 繁體中文
  • 简体中文

【運維管理】使用 Dockerfile 建構靜態網頁鏡像

使用 Docker 鏡像檔案提高了部署的可攜性,方便交付,或是轉移可 HTTP 訪問的靜態文件到不同主機上

新建一個 Dockerfile

其實 Dockerfile 就是一個文字檔案,主要描述鏡像需要具備的服務。我們這裡使用 nginx 來做網頁伺服器,讓 HTTP 協議能夠訪問鏡像中的靜態文件。

首先撰寫一個 Dockerfile 如下:

# 使用 nginx 來提供靜態文件內容
FROM nginx:alpine
# 切換靜態文件所在的目錄位置
WORKDIR /usr/share/nginx/html
# 移除原來默認的靜態文件
RUN rm -rf ./*
# 複製新的靜態文件至當下目錄位置
COPY /dist .
# 開啟端口 80
EXPOSE 80
# 執行 nginx
ENTRYPOINT ["nginx", "-g", "daemon off;"]

構築鏡像檔案

有了預先撰寫好的 Dockerfile 之後,並且準備好靜態文件放到 dist 目錄之下。執行 docker build 來構築鏡像檔案。

docker build -t webserver .

顯示鏡像檔案

透過 docker image ls 來檢視創建好的鏡像檔案,REPOSITORY 就是構築時的命名,例如:webserver。

docker image ls

封裝鏡像檔案

透過 docker -save -o 可以將鏡像檔案封裝起來。方便在不同的系統平台上載入境像。

docker save -o webserver.tar webserver

載入鏡像檔案

在封裝好的鏡像檔位置,透過 docker load -i 可以載入鏡像檔案。

docker load -i webserver.tar

啟動鏡像檔案

命令 docker container run 可以啟動載入 docker 的鏡像檔。-d 指的是 detached 模式,讓容器在背景中執行。-p 則是端口的對應,將容器中的 80 端口對應到目前執行系統中的 8080 端口。

docker container run -d -p 8080:80 webserver

訪問容器的內容

如果一切無誤的話,現在已經可以使用 curl 訪問靜態文件的內容。

curl http://localhost:8080

顯示啟動中的容器

另外,執行 docker ps 可以顯示目前執行中的容器,還有容器的 ID。

docker ps

停止啟動中的容器

停止容器的方式,則是執行 docker stop 指令後綴加上容器的 ID。

docker stop 27a2337c3c16

刪除鏡像檔案

刪除鏡像檔案的方式也很容易,docker image rm webserver。這裡的 webserver 就是 repository 的名稱。

docker image rm webserver

如果要一口氣刪掉 docker 中所有的鏡像檔案,可以執行命令如下:

docker image rm $(docker image ls -a -q)

不過記得小心慎用啊,各位~😅