services: db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: grow POSTGRES_USER: grow POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U grow"] interval: 5s timeout: 5s retries: 10 app: build: . restart: unless-stopped depends_on: db: condition: service_healthy ports: - "${PORT:-3000}:3000" environment: DATABASE_URL: postgresql://grow:${POSTGRES_PASSWORD:-changeme}@db:5432/grow NEXTAUTH_URL: ${NEXTAUTH_URL} NEXTAUTH_SECRET: ${NEXTAUTH_SECRET} SUPERADMIN_EMAIL: ${SUPERADMIN_EMAIL} # Optional SMTP_HOST: ${SMTP_HOST:-} SMTP_PORT: ${SMTP_PORT:-587} SMTP_USER: ${SMTP_USER:-} SMTP_PASS: ${SMTP_PASS:-} SMTP_FROM: ${SMTP_FROM:-} PUSHOVER_APP_TOKEN: ${PUSHOVER_APP_TOKEN:-} VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY:-} VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY:-} VAPID_SUBJECT: ${VAPID_SUBJECT:-} migrate: build: . command: > sh -c "npx prisma db push --skip-generate" depends_on: db: condition: service_healthy environment: DATABASE_URL: postgresql://grow:${POSTGRES_PASSWORD:-changeme}@db:5432/grow restart: "no" volumes: postgres_data: