FROM node:20-alpine WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies RUN npm install # Copy application files COPY . . # Create data directory for SQLite database RUN mkdir -p /app/data # Accept build arguments ARG SITE_URL=https://church.example.com ARG EMAIL_HOST=smtp.example.com ARG EMAIL_PORT=587 ARG EMAIL_USER=noreply@example.com ARG EMAIL_PASSWORD=your-email-password ARG EMAIL_FROM=New Life Christian Church # Set environment variables for build ENV SITE_URL=$SITE_URL ENV EMAIL_HOST=$EMAIL_HOST ENV EMAIL_PORT=$EMAIL_PORT ENV EMAIL_USER=$EMAIL_USER ENV EMAIL_PASSWORD=$EMAIL_PASSWORD ENV EMAIL_FROM=$EMAIL_FROM # Security: AUTH_SECRET and admin credentials are auto-generated on first launch # They are stored in the database and logged once to container logs # Use: docker logs | grep "ADMIN CREDENTIALS" to retrieve them # Build the application RUN npm run build # Expose port EXPOSE 3000 # Set runtime environment variables ENV NODE_ENV=production ENV NUXT_HOST=0.0.0.0 ENV NUXT_PORT=3000 # Start the application CMD ["node", ".output/server/index.mjs"]