services: postgres: image: postgres:16-alpine container_name: minerops-postgres restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-minerops} POSTGRES_USER: ${POSTGRES_USER:-minerops} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - ./data/postgres:/var/lib/postgresql/data networks: - minerops-net healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-minerops} -d ${POSTGRES_DB:-minerops}"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: minerops-redis restart: unless-stopped command: ["redis-server", "--appendonly", "yes"] volumes: - ./data/redis:/data networks: - minerops-net healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 backend: build: context: ./backend container_name: minerops-backend restart: unless-stopped env_file: - .env depends_on: postgres: condition: service_healthy redis: condition: service_healthy ports: - "${BACKEND_PORT:-8000}:8000" networks: - minerops-net networks: minerops-net: driver: bridge