# Base image with Node.js FROM node:18-alpine USER root # Arguments that can be passed at build time ARG N8N_PATH=/usr/local/lib/node_modules/n8n ARG BASE_PATH=/root/.n8n ARG DATABASE_PATH=$BASE_PATH ARG LOG_PATH=$BASE_PATH/logs ARG STORAGE_PATH=$BASE_PATH/storage # Install dependencies RUN apk add --no-cache git python3 py3-pip make g++ build-base cairo-dev pango-dev # Install n8n globally RUN npm install -g n8n # Create directories and set permissions RUN mkdir -p $LOG_PATH $N8N_PATH/uploads && chmod -R 777 $LOG_PATH $N8N_PATH # Set work directory WORKDIR /data # Configure environment variables (can be set in your docker-compose or runtime) ENV DB_TYPE=postgresdb ENV DB_POSTGRESDB_HOST=postgres ENV DB_POSTGRESDB_USER=${POSTGRES_USER} ENV DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} ENV N8N_DIAGNOSTICS_ENABLED=false ENV N8N_PERSONALIZATION_ENABLED=false ENV N8N_HOST=n8n.web4ai.cloud ENV N8N_PROTOCOL=https ENV N8N_SECURE_COOKIE=true ENV N8N_PORT=5678 ENV N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} ENV N8N_USER_MANAGEMENT_JWT_SECRET=${N8N_USER_MANAGEMENT_JWT_SECRET} ENV N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true # Expose the default n8n port EXPOSE 5678 # Start n8n CMD ["n8n"]