Spaces:
Sleeping
Sleeping
| # --- 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"] |