version: '3.8' services: postgres: image: postgres:15 environment: POSTGRES_DB: autoposter POSTGRES_USER: autoposter POSTGRES_PASSWORD: autoposter123 volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U autoposter"] interval: 30s timeout: 10s retries: 5 redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data backend: build: context: . dockerfile: ./backend/Dockerfile env_file: - .env ports: - "8000:8000" depends_on: postgres: condition: service_healthy redis: condition: service_started volumes: - ./backend:/app command: uv run uvicorn main:app --host 0.0.0.0 --port 8000 --reload frontend: env_file: - .env build: context: ./frontend dockerfile: Dockerfile ports: - "3000:3000" volumes: - ./frontend:/app - frontend_node_modules:/app/node_modules environment: - REACT_APP_API_URL=http://localhost:8000 - PORT=3000 - CHOKIDAR_USEPOLLING=true - WATCHPACK_POLLING=true - FAST_REFRESH=true - WDS_SOCKET_HOST=localhost - WDS_SOCKET_PORT=3000 command: npm start stdin_open: true tty: true scrapper: build: context: . dockerfile: Dockerfile.scrapper environment: - DATABASE_URL=postgresql://autoposter:autoposter123@postgres:5432/autoposter - REDIS_URL=redis://redis:6379 - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN} - TELEGRAM_API_ID=${TELEGRAM_API_ID} - TELEGRAM_API_HASH=${TELEGRAM_API_HASH} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} depends_on: - postgres - redis volumes: - ./backend/media:/app/media - ./sessions:/app/sessions restart: unless-stopped publisher: build: context: . dockerfile: Dockerfile.publisher environment: - DATABASE_URL=postgresql://autoposter:autoposter123@postgres:5432/autoposter - REDIS_URL=redis://redis:6379 - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN} - TELEGRAM_API_ID=${TELEGRAM_API_ID} - TELEGRAM_API_HASH=${TELEGRAM_API_HASH} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} depends_on: - postgres - redis volumes: - ./backend/media:/app/media - ./sessions:/app/sessions restart: unless-stopped llm-worker: build: context: . dockerfile: Dockerfile.llm-worker depends_on: - postgres - redis environment: - DATABASE_URL=postgresql://autoposter:autoposter123@postgres:5432/autoposter - REDIS_URL=redis://redis:6379 - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} volumes: - ./backend/media:/app/media - ./sessions:/app/sessions restart: unless-stopped volumes: postgres_data: redis_data: frontend_node_modules: