以下是原文翻译成繁體中文的內容:
# 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;
}
}
這個配置做了兩件事:
- 它像以前一樣服務我們的 HTML 檔案。
- 它在
/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