1
0
card/docker-compose.yml
2025-06-01 21:39:53 +09:00

64 lines
1.3 KiB
YAML

version: '3.8'
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: aicard
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
api:
build:
context: ./api
dockerfile: Dockerfile
restart: unless-stopped
environment:
DATABASE_URL: postgresql+asyncpg://postgres:postgres@postgres:5432/aicard
PYTHONPATH: /app
ports:
- "8000:8000"
depends_on:
postgres:
condition: service_healthy
volumes:
- ./api:/app
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
web:
build:
context: ./web
dockerfile: Dockerfile
restart: unless-stopped
ports:
- "3000:3000"
depends_on:
- api
environment:
- VITE_API_URL=http://api:8000
# Cloudflare Tunnel (optional)
cloudflared:
image: cloudflare/cloudflared:latest
restart: unless-stopped
command: tunnel --no-autoupdate run
environment:
- TUNNEL_TOKEN=${CLOUDFLARE_TUNNEL_TOKEN}
depends_on:
- api
- web
profiles:
- tunnel
volumes:
postgres_data: