puffin-app/docker-compose.yml
Matt 470101a2d1
All checks were successful
Build and Push Docker Images / docker (push) Successful in 23s
Add SMTP environment variables to backend Docker container
Fix for "Missing credentials for PLAIN" error when sending emails.
The backend container was missing SMTP configuration environment
variables, causing nodemailer authentication to fail.

Added SMTP variables to docker-compose.yml:
- SMTP_HOST, SMTP_PORT, SMTP_SECURE
- SMTP_USER, SMTP_PASSWORD
- SMTP_FROM_NAME, SMTP_FROM_EMAIL

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 20:40:07 +01:00

68 lines
1.9 KiB
YAML

version: '3.8'
services:
# Frontend - Vite React App (static files served by host Nginx)
web:
image: code.puffinoffset.com/matt/puffin-app:frontend-latest
container_name: puffin-frontend
ports:
- "3800:3000"
environment:
- NODE_ENV=production
- VITE_API_BASE_URL=${VITE_API_BASE_URL:-https://api.puffinoffset.com}
- VITE_WREN_API_TOKEN=${VITE_WREN_API_TOKEN}
- VITE_FORMSPREE_CONTACT_ID=${VITE_FORMSPREE_CONTACT_ID}
- VITE_FORMSPREE_OFFSET_ID=${VITE_FORMSPREE_OFFSET_ID}
- VITE_STRIPE_PUBLISHABLE_KEY=${VITE_STRIPE_PUBLISHABLE_KEY}
restart: unless-stopped
networks:
- puffin-network
depends_on:
backend:
condition: service_healthy
# Backend - Express API Server
backend:
image: code.puffinoffset.com/matt/puffin-app:backend-latest
container_name: puffin-backend
ports:
- "3801:3001"
volumes:
- puffin-data:/app/data
environment:
- NODE_ENV=production
- PORT=3001
- FRONTEND_URL=${FRONTEND_URL:-https://puffinoffset.com}
- STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY}
- STRIPE_WEBHOOK_SECRET=${STRIPE_WEBHOOK_SECRET}
- WREN_API_TOKEN=${WREN_API_TOKEN}
- WREN_DRY_RUN=${WREN_DRY_RUN:-false}
- DATABASE_PATH=/app/data/orders.db
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT}
- SMTP_SECURE=${SMTP_SECURE}
- SMTP_USER=${SMTP_USER}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- SMTP_FROM_NAME=${SMTP_FROM_NAME}
- SMTP_FROM_EMAIL=${SMTP_FROM_EMAIL}
dns:
- 8.8.8.8
- 8.8.4.4
networks:
- puffin-network
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3001/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
puffin-network:
driver: bridge
volumes:
puffin-data:
driver: local