# --- 1. 使用 Node.js 20 作為基礎映像 --- FROM node:20-alpine # --- 2. 以 root 權限安裝系統和全域套件 --- USER root RUN apk add --no-cache \ git \ python3 \ py3-pip \ make \ g++ \ build-base \ libc6-compat # 全域安裝 n8n RUN npm install -g n8n # --- 3. 建立資料夾並修正權限 --- # 在修改權限前,先建立 /data 和 /data/.n8n 資料夾。 # -p 參數可以確保即使父目錄不存在也能成功建立。 #RUN mkdir -p /data RUN mkdir -p /data/.n8n # 將 /data 資料夾的擁有權交給 'node' 使用者 RUN chown -R node:node /data # 確保 /data/.n8n 目錄權限為 700,檔案(如 config)權限為 600 RUN chmod 700 /data/.n8n # 清理可能存在的無效 config 檔案 RUN rm -f /data/.n8n/config # --- 4. 切換到已存在的 'node' 使用者 --- USER node # --- 5. 設定工作目錄並執行應用程式 --- WORKDIR /data EXPOSE 7860 # 啟動 n8nk CMD ["n8n", "start"]