n8nSQ / Dockerfile
sam12345324's picture
Update Dockerfile
84132fa verified
# Use official Node.js slim image
FROM node:20-slim
# Install system dependencies for image/audio processing (optional)
USER root
RUN apt update && apt install -y \
ffmpeg git python3 python3-pip make g++ build-essential \
libcairo2-dev libpango1.0-dev libjpeg-dev libpng-dev libgif-dev \
librsvg2-dev chromium libvips-dev libvips-tools imagemagick \
libmagickwand-dev libglib2.0-dev libjpeg62-turbo-dev \
libexif-dev libheif-dev graphicsmagick && \
apt clean
# Puppeteer Chromium path
ENV PUPPETEER_SKIP_DOWNLOAD=true
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
# Install n8n globally
RUN npm install -g n8n
# Switch to HF default node user
USER node
WORKDIR /workspace
# Expose HF default port
ENV N8N_PORT=7860
EXPOSE 7860
# Timezone & debug
ENV TZ=UTC
ENV GENERIC_TIMEZONE=UTC
ENV SHARP_VERBOSE=true
# PostgreSQL config will come from secrets
ENV DB_TYPE=postgresdb
ENV DB_POSTGRESDB_HOST=${DB_POSTGRESDB_HOST}
ENV DB_POSTGRESDB_PORT=${DB_POSTGRESDB_PORT}
ENV DB_POSTGRESDB_DATABASE=${DB_POSTGRESDB_DATABASE}
ENV DB_POSTGRESDB_USER=${DB_POSTGRESDB_USER}
ENV DB_POSTGRESDB_PASSWORD=${DB_POSTGRESDB_PASSWORD}
# n8n credentials encryption key
ENV N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
# Start n8n with tunnel for public HF URL
CMD ["n8n", "start", "--host", "0.0.0.0", "--port", "7860"]