74 lines
2.4 KiB
YAML
74 lines
2.4 KiB
YAML
services:
|
|
db:
|
|
image: postgres:16-alpine
|
|
container_name: pulsescore-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
- ./scripts/init-db:/docker-entrypoint-initdb.d
|
|
networks:
|
|
- pulsescore-net
|
|
healthcheck:
|
|
test:
|
|
[
|
|
'CMD-SHELL',
|
|
'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}',
|
|
]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
api:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: pulsescore-api
|
|
restart: unless-stopped
|
|
environment:
|
|
PORT: '8080'
|
|
ENVIRONMENT: production
|
|
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable
|
|
CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS}
|
|
RATE_LIMIT_RPM: ${RATE_LIMIT_RPM:-100}
|
|
JWT_SECRET: ${JWT_SECRET}
|
|
JWT_ACCESS_TTL: ${JWT_ACCESS_TTL:-15m}
|
|
JWT_REFRESH_TTL: ${JWT_REFRESH_TTL:-168h}
|
|
STRIPE_BILLING_SECRET_KEY: ${STRIPE_BILLING_SECRET_KEY}
|
|
STRIPE_BILLING_PUBLISHABLE_KEY: ${STRIPE_BILLING_PUBLISHABLE_KEY}
|
|
STRIPE_BILLING_WEBHOOK_SECRET: ${STRIPE_BILLING_WEBHOOK_SECRET}
|
|
STRIPE_BILLING_PORTAL_RETURN_URL: ${STRIPE_BILLING_PORTAL_RETURN_URL}
|
|
STRIPE_BILLING_PRICE_GROWTH_MONTHLY: ${STRIPE_BILLING_PRICE_GROWTH_MONTHLY}
|
|
STRIPE_BILLING_PRICE_GROWTH_ANNUAL: ${STRIPE_BILLING_PRICE_GROWTH_ANNUAL}
|
|
STRIPE_BILLING_PRICE_SCALE_MONTHLY: ${STRIPE_BILLING_PRICE_SCALE_MONTHLY}
|
|
STRIPE_BILLING_PRICE_SCALE_ANNUAL: ${STRIPE_BILLING_PRICE_SCALE_ANNUAL}
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
networks:
|
|
- pulsescore-net
|
|
- web
|
|
|
|
web:
|
|
build:
|
|
context: ./web
|
|
dockerfile: Dockerfile
|
|
container_name: pulsescore-web
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- api
|
|
networks:
|
|
- web
|
|
|
|
volumes:
|
|
pgdata:
|
|
|
|
networks:
|
|
pulsescore-net:
|
|
driver: bridge
|
|
web:
|
|
external: true
|