好的,以下是一個完整的從 寫程式 → 寫 Dockerfile → 建立容器 → 部署 的實戰範例流程,以 Node.js API 應用為例,非常適合入門者或快速建立原型。
🧩 範例目標
建立一個簡單的 Node.js REST API,使用 Docker 容器化,最後透過本機或雲端部署運行。
🪛 第一步:撰寫程式碼
建立專案資料夾
mkdir hello-docker-node && cd hello-docker-node
初始化 Node.js 專案
npm init -y
安裝 Express
npm install express
建立 index.js
// index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('🚀 Hello from Dockerized Node.js!');
});
app.listen(port, () => {
console.log(`App is listening on port ${port}`);
});
📦 第二步:撰寫 Dockerfile
建立一個名為 Dockerfile 的檔案,內容如下:
# 使用 Node 官方映像
FROM node:18-alpine
# 建立工作目錄
WORKDIR /app
# 複製 package.json 並安裝依賴
COPY package*.json ./
RUN npm install
# 複製應用程式原始碼
COPY . .
# 開放埠口
EXPOSE 3000
# 啟動指令
CMD ["node", "index.js"]
📂 第三步:建立 .dockerignore
避免把不必要的檔案加入映像檔:
node_modules
npm-debug.log
Dockerfile
.dockerignore
.git
🔨 第四步:建立 Docker 映像檔
docker build -t hello-node .
成功後,你會看到訊息如:
Successfully tagged hello-node:latest
🚀 第五步:運行容器(本機測試)
docker run -p 3000:3000 hello-node
然後開啟瀏覽器或使用 curl:
http://localhost:3000
結果應該會顯示:
🚀 Hello from Dockerized Node.js!
☁️ 第六步:部署到雲端(選擇一種方式)
方法一:使用 Docker Hub + 雲主機(如 EC2、Linode)
- 登入 Docker Hub
docker login - 標記映像並推送
docker tag hello-node your_dockerhub_username/hello-node docker push your_dockerhub_username/hello-node - 在遠端主機拉取與運行
docker pull your_dockerhub_username/hello-node docker run -d -p 80:3000 your_dockerhub_username/hello-node
方法二:使用 Docker + fly.io(一行指令部署)
- 安裝 CLI:
brew install flyctl - 初始化:
flyctl launch它會引導你設定應用名稱與地區,並自動建立
fly.toml - 部署:
flyctl deploy
✅ 總結流程
| 步驟 | 描述 |
|---|---|
| 🧑💻 寫程式 | 建立簡單的 Node.js API |
| 🧱 Docker 化 | 撰寫 Dockerfile + .dockerignore |
| 🛠️ Build | 使用 docker build 生成映像 |
| 🧪 測試 | 本機使用 docker run 測試 API |
| ☁️ 部署 | 上傳 Docker Hub 或使用 fly.io / EC2 等部署 |
📁 專案結構最終會是:
hello-docker-node/
├── Dockerfile
├── index.js
├── package.json
├── package-lock.json
└── .dockerignore