n8n-free / Dockerfile
chakasoft's picture
Update Dockerfile
06301a6 verified
raw
history blame
1.98 kB
# 使用 Node.js 20,以符合最新版 n8n 的要求
FROM node:20-alpine
# --- Build-time arguments ---
ARG N8N_VERSION=latest
ARG N8N_PATH=/home/node/.n8n
# --- 環境變數設定 ---
ENV N8N_USER_FOLDER=$N8N_PATH
ENV N8N_DISABLE_PRODUCTION_MAIN_PROCESS_BETA=true
# --- 關鍵修正:允許 n8n 的 Code 節點使用外部模組 ---
ENV NODE_FUNCTION_ALLOW_EXTERNAL=puppeteer,playwright
# --- 資料庫設定 (連接至 Supabase) ---
# 注意:這些值將由 Hugging Face Secrets 提供,此處僅為宣告
ENV DB_TYPE=postgresdb
ENV DB_POSTGRESDB_HOST=""
ENV DB_POSTGRESDB_PORT=5432
ENV DB_POSTGRESDB_DATABASE=postgres
ENV DB_POSTGRESDB_USER=postgres
ENV DB_POSTGRESDB_PASSWORD=""
ENV DB_POSTGRESDB_SSL=true
# Supabase 需要 SSL 連線
# --- 安裝系統依賴 ---
# 為 Playwright 添加必要的系統依賴
USER root
RUN apk add --no-cache \
git \
procps-ng \
# Playwright 的瀏覽器依賴 (Alpine Linux)
udev \
ttf-freefont \
chromium \
nss \
freetype \
harfbuzz \
ca-certificates \
dbus-glib \
fontconfig
# --- 安裝 n8n 和 Playwright 套件 ---
RUN npm install -g n8n@${N8N_VERSION} playwright puppeteer --omit=dev
# --- 安裝 Playwright 的瀏覽器二進位檔案 ---
# 我們已經在上面的 `apk add` 指令中手動安裝了所有依賴。
RUN npx playwright install
# --- 設定權限 ---
# 主要修正:將 chown 的目標路徑修正為 /usr/local/lib/node_modules
RUN mkdir -p ${N8N_PATH} && \
chown -R node:node /home/node /usr/local/lib/node_modules
# --- 切換到非 root 用戶 ---
USER node
WORKDIR /home/node
# --- 開放 n8n 預設端口 ---
EXPOSE 5678
# --- 啟動 n8n 並在日誌中顯示公開網址 ---
CMD sh -c 'echo "-----------------------------------------------------" && \
echo "n8n is running!" && \
echo "Access it at: https://${SPACE_HOST}" && \
echo "-----------------------------------------------------" && \
n8n'