services: db: image: postgres:18 container_name: postgres__open-wearables environment: POSTGRES_DB: open-wearables POSTGRES_USER: open-wearables POSTGRES_PASSWORD: open-wearables ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U open-wearables -d open-wearables"] interval: 5s timeout: 5s retries: 5 volumes: - postgres_data:/var/lib/postgresql app: build: context: ./backend dockerfile: Dockerfile container_name: backend__open-wearables image: open-wearables-platform:latest pull_policy: never command: scripts/start/app.sh env_file: - ./backend/config/.env environment: - DB_HOST=db - REDIS_HOST=redis ports: - "8000:8000" depends_on: db: condition: service_healthy redis: condition: service_started develop: watch: - action: sync path: ./backend/app target: /root_project/app - action: sync+restart path: ./backend/migrations target: /root_project/migrations - action: sync+restart path: ./backend/config/.env target: /root_project/config/.env - action: sync path: ./backend/scripts target: /root_project/scripts - action: sync path: ./backend/tests target: /root_project/tests - action: rebuild path: ./backend/uv.lock restart: on-failure celery-worker: container_name: celery-worker__open-wearables image: open-wearables-platform:latest pull_policy: never command: scripts/start/worker.sh env_file: - ./backend/config/.env environment: - DB_HOST=db - REDIS_HOST=redis depends_on: - redis - db - app develop: watch: - action: sync+restart path: ./backend/app target: /root_project/app - action: sync path: ./backend/scripts target: /root_project/scripts celery-beat: container_name: celery-beat__open-wearables image: open-wearables-platform:latest pull_policy: never command: scripts/start/beat.sh env_file: - ./backend/config/.env environment: - DB_HOST=db - REDIS_HOST=redis depends_on: - redis - db - app develop: watch: - action: sync+restart path: ./backend/app target: /root_project/app - action: sync path: ./backend/scripts target: /root_project/scripts flower: container_name: flower__open-wearables image: open-wearables-platform:latest pull_policy: never command: scripts/start/flower.sh env_file: - ./backend/config/.env environment: - DB_HOST=db - REDIS_HOST=redis ports: - 5555:5555 depends_on: - redis - db - app develop: watch: - action: sync path: ./backend target: /root_project ignore: - .venv/ redis: container_name: redis__open-wearables image: redis:8 ports: - "6379:6379" volumes: - redis_data:/var/lib/redis/data frontend: build: context: ./frontend dockerfile: Dockerfile.dev container_name: frontend__open-wearables image: open-wearables-frontend:dev pull_policy: never ports: - "3000:3000" depends_on: - app develop: watch: - action: sync path: ./frontend/src target: /app/src - action: sync path: ./frontend/public target: /app/public - action: rebuild path: ./frontend/package.json - action: rebuild path: ./frontend/pnpm-lock.yaml - action: rebuild path: ./frontend/vite.config.ts restart: on-failure volumes: postgres_data: redis_data: