services: postgres: image: postgres:16 container_name: bilhej-postgres-prod environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - pgdata-prod:/var/lib/postgresql/data ports: - "127.0.0.1:5433:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped backend: build: dockerfile: docker/backend.prod.Dockerfile context: . container_name: bilhej-backend-prod environment: SPRING_PROFILES_ACTIVE: docker,prod POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} JWT_SECRET: ${JWT_SECRET} STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY} STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET} STRIPE_PRICE_ID: ${STRIPE_PRICE_ID} SWISH_NUMBER: ${SWISH_NUMBER} ADMIN_EMAIL: ${ADMIN_EMAIL} ADMIN_PASSWORD: ${ADMIN_PASSWORD} APP_PUBLIC_BASE_URL: ${APP_PUBLIC_BASE_URL:-https://bilhej.se} MAIL_HOST: ${MAIL_HOST:-} MAIL_PORT: ${MAIL_PORT:-587} MAIL_USERNAME: ${MAIL_USERNAME:-} MAIL_PASSWORD: ${MAIL_PASSWORD:-} MAIL_FROM: ${MAIL_FROM:-noreply@bilhej.se} depends_on: postgres: condition: service_healthy restart: unless-stopped frontend: build: dockerfile: docker/frontend.prod.Dockerfile context: . args: VITE_UMAMI_WEBSITE_ID: ${VITE_UMAMI_WEBSITE_ID:-} VITE_UMAMI_SCRIPT_URL: ${VITE_UMAMI_SCRIPT_URL:-https://analytics.bilhej.se/script.js} container_name: bilhej-frontend-prod ports: - "3001:80" depends_on: - backend networks: - default - web restart: unless-stopped volumes: pgdata-prod: networks: web: external: true