services: backend: build: context: . dockerfile: Dockerfile container_name: aipocket-backend volumes: - /data/aipocket:/data/aipocket env_file: - .env environment: - RESULTS_DIR=/data/aipocket/results - DEDUP_REDIS_URL=redis://redis:6379/0 - DATABASE_URL=postgresql://aipocket:aipocket@postgres:5432/aipocket ports: - "8000:8000" restart: unless-stopped depends_on: redis: condition: service_healthy postgres: condition: service_healthy command: ["serve", "--host", "0.0.0.0", "--port", "8000"] frontend: build: ./frontend container_name: aipocket-frontend ports: - "3080:80" restart: unless-stopped depends_on: - backend # Optional periodic scanner. Enable with: # docker compose --profile watch up -d backend-watch backend-watch: build: context: . dockerfile: Dockerfile container_name: aipocket-watch profiles: ["watch"] volumes: - /data/aipocket:/data/aipocket env_file: - .env environment: - RESULTS_DIR=/data/aipocket/results - DEDUP_REDIS_URL=redis://redis:6379/0 - DATABASE_URL=postgresql://aipocket:aipocket@postgres:5432/aipocket restart: unless-stopped depends_on: redis: condition: service_healthy postgres: condition: service_healthy command: ["watch"] postgres: image: postgres:16-alpine container_name: aipocket-postgres restart: unless-stopped environment: - POSTGRES_USER=aipocket - POSTGRES_PASSWORD=aipocket - POSTGRES_DB=aipocket volumes: - /data/aipocket/pg:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U aipocket -d aipocket"] interval: 5s timeout: 3s retries: 5 redis: image: redis:7-alpine container_name: aipocket-redis restart: unless-stopped command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] volumes: - /data/aipocket/redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5