用 Docker 快速架設 Node.js 靜態網站服務

用 Docker 快速架設 Node.js 靜態網站服務
用 Docker 快速架設 Node.js 靜態網站服務

本篇要解決什麼問題

對前端工程師來說,有時只是單純要一個靜態網站,讓主管或業者看到 Demo,卻因為後端、Nginx、Linux 等設定卡關半天。這時候,其實可以用 Node.js 搭配 Express,再加上 Docker,簡單幾個指令,就能快速建起一個 Demo 網站了。


使用 Node.js + Express 快速提供靜態檔案服務

本篇使用了以下技術與工具:

  • Node.js + Express:提供簡易的靜態檔服務。
  • Docker:容器化應用,讓執行環境一致、方便搬移與佈署。
  • docker-compose:簡化啟動流程與指令。

以下檔案,新增在我們想要架起 Demo 的專案資料夾中。

server.js

server.js 檔裡,主要是讓我們使用 Express 來讓 Node.js 能提供靜態檔案的服務,程式碼如下:

// server.js
const express = require("express");
const path = require("path");

const app = express();
const PORT = 3001; // PORT 要修改成自己需要的

// 提供靜態檔案(例如 index.html、images、js、css)
app.use(express.static(path.join(__dirname)));

app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

這段程式會讓 Node.js 在本機的 3001 PORT 上開啟一個伺服器,並提供當前目錄底下的所有檔案給瀏覽器存取。

PORT 請自行修改想要的,這邊寫 3001 是要避開常用到的 3000。

package.json

server.js 裡有使用 express,因此 package.json 需要安裝。

如果專案裡本來就有 package.json,那就直接執行:

npm install express

如果還沒有 package.json,那就執行以下:

npm init -y
npm install express

docker-compose.yml

這是讓整個 Node.js 專案能在 Docker 裡運行的設定檔,使用官方 node image 搭配 volume 掛載當前資料夾,並自動執行 server:

version: "3.8"
services:
  web:
    image: node:23-alpine3.20
    ports:
      - "3001:3001"
    volumes:
      - .:/usr/src/app
    working_dir: /usr/src/app
    command: node server.js

這邊的 ports,要跟 server.js 裡寫得一樣。

.dockerignore

讓 Docker 避免將不必要的檔案打包進去,例如 .gitnode_modules 等:

node_modules
npm-debug.log
Dockerfile
docker-compose.yml
.env

有了以上四個檔案,就可以準備用 Docker 架起 Demo 網站了。

四個檔案都在同一專案資料夾中。


啟動

本機必須要先安裝好 Docker:https://www.docker.com/products/docker-desktop/

有了 Docker 後,在專案目錄下執行以下指令:

docker-compose up -d

接著打開瀏覽器,輸入 http://localhost:3001,就可以看到你的靜態網站內容了!


專案原始碼連結

本篇說明的檔案,有放在 GitHub 上,取用前請先點擊星星,你的小小動作,對本站都是大大的鼓勵:

https://github.com/letswritetw/letswrite-docker-node-static-site

如果你也常常需要快速測試一份靜態網頁,這個方法可以省下很多時間。

Summary
用 Docker 快速架設 Node.js 靜態網站服務
Article Name
用 Docker 快速架設 Node.js 靜態網站服務
Description
本教學教你如何使用 Node.js 搭配 Express 和 Docker,快速架設靜態網站,適合前端工程師展示 Demo 或開發測試環境使用。
訂閱
通知
guest

0 Comments
最舊
最新
Inline Feedbacks
看所有留言