Files
winninghunter/docker-compose.yml

63 lines
2.4 KiB
YAML

services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: winninghunter
POSTGRES_USER: winninghunter
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-winninghunter_dev_password}
volumes:
- winninghunter_pg:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U winninghunter -d winninghunter"]
interval: 10s
timeout: 5s
retries: 8
app:
build: .
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
NODE_ENV: production
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3000}
DATABASE_URL: postgresql://winninghunter:${POSTGRES_PASSWORD:-winninghunter_dev_password}@db:5432/winninghunter?schema=public
AUTH_COOKIE_NAME: ${AUTH_COOKIE_NAME:-wh_session}
AUTH_SESSION_DAYS: ${AUTH_SESSION_DAYS:-30}
ADMIN_EMAILS: ${ADMIN_EMAILS:-}
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET:-}
META_ACCESS_TOKEN: ${META_ACCESS_TOKEN:-}
META_GRAPH_VERSION: ${META_GRAPH_VERSION:-v23.0}
APIFY_TOKEN: ${APIFY_TOKEN:-}
APIFY_TIKTOK_ACTOR_ID: ${APIFY_TIKTOK_ACTOR_ID:-toolzerhub~tiktok-shop-products-scraper}
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
OPENAI_MODEL: ${OPENAI_MODEL:-gpt-5.6-luna}
STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY:-}
STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET:-}
STRIPE_PRICE_BASIC_MONTHLY: ${STRIPE_PRICE_BASIC_MONTHLY:-}
STRIPE_PRICE_BASIC_YEARLY: ${STRIPE_PRICE_BASIC_YEARLY:-}
STRIPE_PRICE_STANDARD_MONTHLY: ${STRIPE_PRICE_STANDARD_MONTHLY:-}
STRIPE_PRICE_STANDARD_YEARLY: ${STRIPE_PRICE_STANDARD_YEARLY:-}
STRIPE_PRICE_PREMIUM_MONTHLY: ${STRIPE_PRICE_PREMIUM_MONTHLY:-}
STRIPE_PRICE_PREMIUM_YEARLY: ${STRIPE_PRICE_PREMIUM_YEARLY:-}
CRON_SECRET: ${CRON_SECRET:-}
RESEND_API_KEY: ${RESEND_API_KEY:-}
ALERT_FROM_EMAIL: ${ALERT_FROM_EMAIL:-}
ENABLE_DEMO_ACCOUNTS: ${ENABLE_DEMO_ACCOUNTS:-false}
APIFY_ACTOR_ID: ${APIFY_ACTOR_ID:-aiscraperdev~facebook-meta-ads-library-scraper}
ports:
- "${PORT:-3000}:3000"
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:3000/api/health >/dev/null || exit 1"]
interval: 30s
timeout: 5s
retries: 5
start_period: 45s
command: npm run start:deploy
volumes:
winninghunter_pg: