services: postgres: image: postgres:16-alpine environment: POSTGRES_DB: linkmachine POSTGRES_USER: linkmachine POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U linkmachine"] interval: 5s timeout: 5s retries: 5 redis: image: redis:7-alpine volumes: - redis_data:/data ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 backend: build: ./backend depends_on: postgres: condition: service_healthy redis: condition: service_healthy environment: DATABASE_URL: postgresql+asyncpg://linkmachine:${DB_PASSWORD}@postgres:5432/linkmachine REDIS_URL: redis://redis:6379/0 JWT_SECRET_KEY: ${JWT_SECRET} ENCRYPTION_KEY: ${ENCRYPTION_KEY} volumes: - ./worker:/worker-source:ro ports: - "8000:8000" frontend: build: ./frontend ports: - "3000:80" depends_on: - backend volumes: postgres_data: redis_data: