services: db: image: postgres:alpine restart: unless-stopped ports: - 5433:5432 volumes: - postgres_data_tanstarter:/var/lib/postgresql/data environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=tanstarter healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d tanstarter"] interval: 5s timeout: 5s retries: 20 migrate: image: oven/bun:1.3.3-alpine working_dir: /app env_file: - .env environment: - DATABASE_URL=postgresql://postgres:postgres@db:5432/tanstarter volumes: - ./:/app depends_on: db: condition: service_healthy command: > sh -lc "HUSKY=0 bun install --frozen-lockfile && bun run db generate && bun run db migrate" restart: "no" app: build: context: . dockerfile: Dockerfile args: - VITE_BASE_URL=${VITE_BASE_URL} env_file: - .env environment: - DATABASE_URL=postgresql://postgres:postgres@db:5432/tanstarter - HOST=0.0.0.0 - PORT=3000 expose: - "3000" depends_on: db: condition: service_healthy migrate: condition: service_completed_successfully restart: unless-stopped caddy: image: caddy:2-alpine restart: unless-stopped depends_on: app: condition: service_started ports: - 80:80 - 443:443 volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config volumes: postgres_data_tanstarter: caddy_data: caddy_config: