| # ใช้ base image ของ Ubuntu 22.04 | |
| FROM ubuntu:22.04 | |
| # ตั้งค่า Environment Variables | |
| ENV DEBIAN_FRONTEND=noninteractive \ | |
| NODE_VERSION=20 \ | |
| N8N_HOST=0.0.0.0 \ | |
| N8N_PORT=7860 \ | |
| GENERIC_TIMEZONE=Asia/Bangkok \ | |
| N8N_LOG_LEVEL=info \ | |
| N8N_USER_FOLDER=/root \ | |
| N8N_SECURE_COOKIE=false \ | |
| EXECUTIONS_PROCESS=main | |
| # รวมขั้นตอนการติดตั้ง Dependencies, Node.js, และ n8n ไว้ในคำสั่ง RUN เดียว | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends \ | |
| curl \ | |
| gnupg \ | |
| ca-certificates \ | |
| tzdata \ | |
| tini \ | |
| python3 \ | |
| python3-pip \ | |
| build-essential && \ | |
| # ตั้งค่า Timezone | |
| ln -sf /usr/share/zoneinfo/${GENERIC_TIMEZONE} /etc/localtime && \ | |
| echo "${GENERIC_TIMEZONE}" > /etc/timezone && \ | |
| # ติดตั้ง Node.js (ใช้ NodeSource repository) | |
| mkdir -p /etc/apt/keyrings && \ | |
| curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ | |
| echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \ | |
| apt-get update && \ | |
| apt-get install -y --no-install-recommends nodejs && \ | |
| # ตรวจสอบ Node.js version | |
| node --version && npm --version && \ | |
| # ติดตั้ง n8n (ใช้ stable version แทน beta) | |
| npm install -g n8n --unsafe-perm && \ | |
| # สร้าง Directory สำหรับเก็บข้อมูลของ n8n และกำหนด permission | |
| mkdir -p ${N8N_USER_FOLDER} && \ | |
| chmod 755 ${N8N_USER_FOLDER} && \ | |
| # ล้างไฟล์ที่ไม่จำเป็นเพื่อลดขนาด Image | |
| apt-get clean && \ | |
| npm cache clean --force && \ | |
| rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /root/.npm | |
| # กำหนดพื้นที่จัดเก็บข้อมูลถาวร (Persistent Storage) | |
| VOLUME ["/root/.n8n"] | |
| # เปิด Port ที่ n8n ใช้งาน | |
| EXPOSE 7860 | |
| # กำหนด working directory | |
| WORKDIR /root | |
| # ใช้ tini เป็น init process | |
| ENTRYPOINT ["tini", "--"] | |
| # คำสั่งเริ่มต้นการทำงานของ n8n พร้อม debug info | |
| CMD ["sh", "-c", "echo 'Starting n8n...' && echo 'Node version:' && node --version && echo 'n8n version:' && n8n --version && n8n", "start"] |