services: db: image: mariadb:11.6 environment: MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} MARIADB_DATABASE: ${DB_NAME} MARIADB_USER: ${DB_USER} MARIADB_PASSWORD: ${DB_PASSWORD} volumes: - db_data:/var/lib/mysql env_file: .env ports: - "3306:3306" healthcheck: test: ["CMD-SHELL", "mariadb-admin ping -h 127.0.0.1 -u\"$DB_USER\" -p\"$DB_PASSWORD\" --silent || exit 1"] interval: 5s timeout: 3s retries: 10 start_period: 30s restart: unless-stopped redis: image: redis:7-alpine env_file: .env healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 restart: unless-stopped api: build: context: . dockerfile: docker/Dockerfile.api env_file: .env environment: RUN_MIGRATIONS: "true" depends_on: db: condition: service_healthy ports: ["8000:8000"] restart: unless-stopped editor-bot: build: context: . dockerfile: docker/Dockerfile.bot env_file: .env environment: RUN_MIGRATIONS: "false" depends_on: db: condition: service_healthy restart: unless-stopped worker: build: context: . dockerfile: docker/Dockerfile.worker env_file: .env environment: RUN_MIGRATIONS: "false" depends_on: redis: condition: service_healthy db: condition: service_healthy restart: unless-stopped beat: build: context: . dockerfile: docker/Dockerfile.beat env_file: .env environment: RUN_MIGRATIONS: "false" depends_on: - worker restart: unless-stopped volumes: db_data: