n8n / Dockerfile
kumar-aditya's picture
Update Dockerfile
233bf24 verified
# Hybrid Debian-based Dockerfile for n8n with PostgreSQL secrets and Puppeteer
FROM buildpack-deps:22.04-curl
# Non-interactive installs and timezone
ENV DEBIAN_FRONTEND=noninteractive \
TZ=Asia/Kolkata\
N8N_EDITOR_BASE_URL="https://kumar-aditya-n8n.hf.space" \
WEBHOOK_URL="https://kumar-aditya-n8n.hf.space/"
# Define n8n environment variables
ENV N8N_HOME=/home/n8n/.n8n
ENV NODE_ENV=production
# Mount secrets for PostgreSQL credentials
RUN --mount=type=secret,id=DB_TYPE,required=true \
--mount=type=secret,id=DB_POSTGRESDB_DATABASE,required=true \
--mount=type=secret,id=DB_POSTGRESDB_HOST,required=true \
--mount=type=secret,id=DB_POSTGRESDB_PORT,required=true \
--mount=type=secret,id=DB_POSTGRESDB_USER,required=true \
--mount=type=secret,id=DB_POSTGRESDB_PASSWORD,required=true \
--mount=type=secret,id=DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED,required=true \
export DB_TYPE=$(cat /run/secrets/DB_TYPE) && \
export DB_POSTGRESDB_DATABASE=$(cat /run/secrets/DB_POSTGRESDB_DATABASE) && \
export DB_POSTGRESDB_HOST=$(cat /run/secrets/DB_POSTGRESDB_HOST) && \
export DB_POSTGRESDB_PORT=$(cat /run/secrets/DB_POSTGRESDB_PORT) && \
export DB_POSTGRESDB_USER=$(cat /run/secrets/DB_POSTGRESDB_USER) && \
export DB_POSTGRESDB_PASSWORD=$(cat /run/secrets/DB_POSTGRESDB_PASSWORD) && \
export DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED=$(cat /run/secrets/DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED) && \
echo "DB setup complete"
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
git \
python3 \
python3-pip \
postgresql-client \
chromium-browser \
build-essential \
libssl-dev \
libnss3 \
libasound2 \
libxss1 && rm -rf /var/lib/apt/lists/*
# Install Node.js 20.x and n8n
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - && \
apt-get update && \
apt-get install -y nodejs && \
npm install -g n8n@latest
# Configure Puppeteer to use Chromium
ENV PUPPETEER_SKIP_DOWNLOAD=true
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
# Create n8n user and home
RUN useradd -m -u 1000 n8n
USER n8n
WORKDIR /home/n8n
# Expose n8n port
env APP_PORT=5678
EXPOSE ${APP_PORT}
# Start n8n
CMD ["n8n", "start"]