🚀 [實戰] 用 Docker Compose 快速建置 n8n 本地環境
這套配置的核心目標是:解耦 (Decoupling)。我們讓 n8n 跑在容器內,但透過隧道與你本地的 Python 資源對接。
1. 目錄配置 (Project Structure)
首先,在終端機建立工作目錄。良好的目錄結構是維運的第一步。
Bash
mkdir -p ~/n8n-infra/data
cd ~/n8n-infra
2. 撰寫 docker-compose.yml
使用你最愛的編輯器(VS Code 或 vim),建立 docker-compose.yml。這份檔案定義了 n8n 本身以及一個 PostgreSQL 數據庫(比起預設的 SQLite,Postgres 在長期執行大量 539 數據分析時更穩定)。
YAML
version: '3.8'
services:
db:
image: postgres:16-alpine
container_name: n8n-postgres
restart: always
environment:
- POSTGRES_USER=n8n_admin
- POSTGRES_PASSWORD=n8n_secure_pass
- POSTGRES_DB=n8n_metadata
volumes:
- ./data/postgres:/var/lib/postgresql/data
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n-webui
restart: always
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n_metadata
- DB_POSTGRESDB_USER=n8n_admin
- DB_POSTGRESDB_PASSWORD=n8n_secure_pass
- N8N_BLOCK_SVC_REGISTRATION_EMAIL=false # 解鎖本地註冊限制
- GENERIC_TIMEZONE=Asia/Taipei
# 關鍵:開啟通往 Host 的隧道,讓 n8n 找得到你本地的 Python API
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./data/n8n_storage:/home/node/.n8n
depends_on:
- db
networks:
default:
name: n8n-local-net
3. 一鍵啟動 (Deployment)
在目錄下執行指令,讓 Docker 開始拉取鏡像並建立容器。
Bash
docker compose up -d
-d: 背景執行 (Detached mode),關掉終端機它依然會跑。驗證狀態: 輸入
docker compose ps確保兩個容器都是Up (healthy)。
4. 存取 WebUI
打開 Chrome,輸入網址:
http://localhost:5678
初次登入時,系統會要求你建立管理員帳號。這組帳號只存在於你本地的 Postgres 數據庫中,非常安全。
📝 筆記:為什麼這樣建立 WebUI?
Persistence (持久化): 所有 Workflow 和憑證都存在
./data下。就算你刪掉容器重新up,資料都不會掉。Scalability (可擴展性): 當你移植到 Pi4 時,只要把這個
~/n8n-infra資料夾打包帶走,在 Pi4 上執行同樣的指令,環境會 100% 原封不動復原。Networking (網絡鏈結): 透過
extra_hosts設定,你的 n8n 節點現在可以用http://host.docker.internal:8000存取你 MacBook 上跑的任何服務,避開了 Docker 網路隔離的坑。
留言
張貼留言