services: traefik: tty: true restart: unless-stopped image: traefik command: - "--api.insecure=true" - "--providers.docker=true" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" ports: - "80:80" volumes: - /var/run/docker.sock:/var/run/docker.sock networks: cashlow: ipv4_address: 10.231.215.254 backend: tty: true build: ./packages/backend command: bun run start:dev networks: cashlow: ipv4_address: 10.231.215.2 volumes: - .:/app working_dir: /app/packages/backend restart: unless-stopped labels: - "traefik.http.routers.backend.rule=Host(`api.cashlow.local`)" - "traefik.http.services.backend.loadbalancer.server.port=3000" env_file: - .env frontend: tty: true image: oven/bun command: bun run dev networks: cashlow: ipv4_address: 10.231.215.3 volumes: - .:/app working_dir: /app/packages/web restart: unless-stopped labels: - "traefik.http.routers.frontend.rule=Host(`app.cashlow.local`)" - "traefik.http.services.frontend.loadbalancer.server.port=3000" database: tty: true restart: unless-stopped image: timescale/timescaledb-ha:pg17 volumes: - ./data/postgres:/home/postgres/pgdata/data env_file: - .env user: root ports: - "5432:5432" networks: cashlow: ipv4_address: 10.231.215.4 networks: cashlow: driver: bridge ipam: config: - subnet: 10.231.215.0/24