n8n-free / Dockerfile
chakasoft's picture
Update Dockerfile
cda93c5 verified
raw
history blame
1.38 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 DB_TYPE=sqlite
ENV N8N_DISABLE_PRODUCTION_MAIN_PROCESS_BETA=true
# --- Puppeteer/Chromium 優化環境變數 ---
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
ENV PUPPETEER_ARGS="--no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage --disable-gpu"
# --- 關鍵修正:允許 n8n 的 Code 節點使用 puppeteer ---
ENV NODE_FUNCTION_ALLOW_EXTERNAL=puppeteer
# --- 安裝系統依賴 ---
USER root
RUN apk add --no-cache \
git \
chromium \
procps-ng
# --- 安裝 n8n 和 Puppeteer 套件 ---
# 關鍵修正:同時安裝 n8n 和 puppeteer
RUN npm install -g n8n@${N8N_VERSION} puppeteer --omit=dev
# --- 設定權限 ---
RUN mkdir -p ${N8N_PATH} && \
chown -R node:node /home/node
# --- 切換到非 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'