# ใช้ 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"]