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