以下是原文翻译成繁體中文的內容:

Docker - Web Server

# Docker - 建立一個網頁伺服器

大家好,有志於編程的各位!今天,我們將踏上一段令人興奮的旅程,進入 Docker 和網頁伺服器的世界。作為你們親切友善的鄰居計算機老師,我將一步一步地引導你們進行這次冒險。別擔心你們是編程新手——我們將從基礎開始,逐步學習。所以,來一杯咖啡(或者你們最喜歡的飲料),我們一起來深入研究吧!

## 了解 Docker 和網頁伺服器

### 什麼是 Docker?

想像你正在搬到一個新家。你不是隨意把東西打包進隨便的盒子,而是整齊地把你的物品組織到標籤良好的容器中。這就是 Docker 對軟件做的事情!它將應用程序及其依賴打包成標準化的單位,稱為容器。這使得在不同的環境中移動、部署和運行應用程序變得容易。

### 什麼是網頁伺服器?

網頁伺服器就像餐廳裡的數字服務員。當你在瀏覽器中輸入網站地址時,網頁伺服器接收你的請求,獲取相應的網頁,然後為你提供服務。它是互聯網的支柱,確保你隨時可以訪問網站。

## 使用 Docker 創建一個簡單的網頁伺服器

### 步驟 1:設置環境

首先,我們來確保我們的電腦上已經安裝了 Docker。如果你還沒有這麼做,請前往 Docker 的官方網站並按照你們操作系統的安裝指南操作。

### 步驟 2:創建一個簡單的 HTML 檔案

我們先來創建一個簡單的 HTML 檔案,我們的網頁伺服器將會顯示這個檔案。創建一個名為 `index.html` 的新檔案,內容如下:

```html
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我的 Docker 網頁伺服器</title>
</head>
<body>
    <h1>你好,Docker 世界!</h1>
    <p>這是一個由 Docker 服務的簡單網頁。</p>
</body>
</html>

這個 HTML 檔案創建了一個帶有標題和段落的基礎網頁。這就像寫一封簡單的信,我們的網頁伺服器會將其遞送給訪客。

步驟 3:創建 Dockerfile

現在,我們來創建我們的 Dockerfile。這就像是一個食谱,告訴 Docker 如何建造我們的網頁伺服器容器。創建一個名為 Dockerfile(沒有副檔名)的新檔案,內容如下:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

讓我們來拆解一下:

  • FROM nginx:alpine:這告訴 Docker 使用基于 Alpine Linux 的官方 Nginx 圖像作為我們的起點。
  • COPY index.html /usr/share/nginx/html/index.html:這將我們的 HTML 檔案複製到 Nginx 查找網頁的默認目錄。

步驟 4:構建 Docker 鏡像

現在,我們有了 Dockerfile,來構建我們的 Docker 鏡像。打開終端,導航到你們的 Dockerfile 和 index.html 所在的目錄,並運行:

docker build -t my-web-server .

這個命令告訴 Docker 根據我們的 Dockerfile 構建一個镜像,並將其標記為 "my-web-server"。結尾的點告訴 Docker 在當前目錄中尋找 Dockerfile。

步驟 5:運行 Docker 容器

我們即將完成!讓我們運行我們的 Docker 容器:

docker run -d -p 8080:80 my-web-server

這個命令的作用如下:

  • -d:在後台(分離模式)運行容器
  • -p 8080:80:將你電腦上的端口 8080 映射到容器中的端口 80
  • my-web-server:我們 Docker 鏡像的名稱

測試我們的網頁伺服器

現在是見證真相的時刻!打開你的網頁瀏覽器並訪問 http://localhost:8080。你應該會看到我們的 "你好,Docker 世界!" 消息。恭喜!你剛剛使用 Docker 創建並部署了一個網頁伺服器!

高級主題

自定義 Nginx 配置

如果我們想自定義我們網頁伺服器的行為該怎麼辦?我們可以通过修改 Nginx 配置來做到這點。讓我們創建一個自定義的 Nginx 配置文件,名為 nginx.conf

server {
    listen 80;
    server_name localhost;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }

    location /api {
        return 200 '{"message": "這是一個範例 API 回應"}';
        add_header Content-Type application/json;
    }
}

這個配置做了兩件事:

  1. 它像以前一樣服務我們的 HTML 檔案。
  2. 它在 /api 創建了一個簡單的 API 端點,返回一個 JSON 回應。

現在我們更新我們的 Dockerfile 以使用這個配置:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
COPY nginx.conf /etc/nginx/conf.d/default.conf

重新構建你的 Docker 鏡像並再次運行它。現在,如果你訪問 http://localhost:8080/api,你會看到 JSON 回應!

結論

各位,這就是全部了!我們從 Docker 和網頁伺服器的基本知識開始,一路創建了我們自己的定制網頁伺服器容器。記住,這只是開始。Docker 和網頁開發的世界是廣闊而令人興奮的,有無限的可能性等待著去探索。

這裡是一個我們學到的方法的快速總結,以方便的表格形式呈現:

方法 描述
docker build 從 Dockerfile 構建 Docker 鏡像
docker run 創建並啟動 Docker 容器
docker ps 列出運行的 Docker 容器
docker stop 停止運行的 Docker 容器
docker rm 刪除 Docker 容器

繼續練習,繼續探索,最重要的是,繼續在編程中找到樂趣!誰知道呢?下一個大型的網頁應用程序可能只需要幾個 Docker 容器就能實現。直到下一次,快樂編程!

Credits: Image by storyset