n8n-free / Dockerfile
chakasoft's picture
Update Dockerfile
2e5f6b6 verified
raw
history blame
1.25 kB
# 步驟 1: 升級 Node.js 版本到 20,以符合最新版 n8n 的要求
FROM node:20-alpine
# --- Build-time arguments ---
ARG N8N_VERSION=latest
# 基礎映像檔已包含 node 用戶,其家目錄在 /home/node
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"
# --- 安裝系統依賴 ---
USER root
RUN apk add --no-cache \
git \
chromium \
procps-ng
# --- 安裝 n8n ---
# --omit=dev 忽略開發依賴,減小體積
RUN npm install -g n8n@${N8N_VERSION} --omit=dev
# --- 設定權限 ---
# 步驟 2: 移除多餘的用戶建立指令,因為 'node' 用戶已存在。
# 我們只需要確保 n8n 的資料夾是屬於 'node' 用戶的。
RUN mkdir -p ${N8N_PATH} && \
chown -R node:node /home/node
# --- 切換到非 root 用戶 ---
# 基礎映像檔已經有這個用戶了,我們直接切換過去
USER node
WORKDIR /home/node
# --- 開放 n8n 預設端口 ---
EXPOSE 5678
# --- 啟動 n8n ---
CMD ["n8n"]