version: '3.8' services: traefik: image: traefik:v2.10 volumes: - ./traefik.yml:/etc/traefik/traefik.yml:ro - ./dynamic.yml:/etc/traefik/dynamic.yml:ro ports: - "80:80" - "8080:8080" app: build: context: . dockerfile: Dockerfile restart: always command: npm run dev environment: - DATABASE_URL=postgresql://postgres:postgres@db:5432/temfut?schema=public - NEXTAUTH_URL=http://localhost - NEXTAUTH_SECRET=changeme - SKIP_ENV_VALIDATION=true - MINIO_ENDPOINT=minio - MINIO_PORT=9000 - MINIO_ACCESS_KEY=temfut_admin - MINIO_SECRET_KEY=temfut_secret_2026 - MINIO_BUCKET=temfut - MINIO_USE_SSL=false volumes: - ./src:/app/src - ./public:/app/public - ./prisma:/app/prisma - ./next.config.ts:/app/next.config.ts - ./tsconfig.json:/app/tsconfig.json - ./package.json:/app/package.json - ./.env:/app/.env depends_on: db: condition: service_healthy minio: condition: service_started minio: image: minio/minio restart: always command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: temfut_admin MINIO_ROOT_PASSWORD: temfut_secret_2026 volumes: - minio-data:/data ports: - "9000:9000" - "9001:9001" db: image: postgres:15-alpine restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: temfut volumes: - db-data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: [ "CMD-SHELL", "pg_isready -U postgres -d temfut" ] interval: 5s timeout: 5s retries: 5 volumes: db-data: minio-data: