services: postgres: image: postgres:18.2-alpine3.23 networks: - bot ports: - "5432:5432" environment: POSTGRES_DB: ${PSQL_NAME} POSTGRES_USER: ${PSQL_USER} POSTGRES_PASSWORD: ${PSQL_PASS} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${PSQL_USER} -d ${PSQL_NAME}"] interval: 2s retries: 5 timeout: 10s start_period: 5s volumes: - ./scripts/postgres:/docker-entrypoint-initdb.d - postgres_data:/var/lib/postgresql/data mongo: image: mongo:8.2.5-noble networks: - bot ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASS} MONGO_INITDB_DATABASE: ${MONGO_NAME} healthcheck: test: [ "CMD", "mongosh", "--quiet", "admin", "--eval", "quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)" ] interval: 10s timeout: 10s retries: 5 start_period: 10s volumes: - ./scripts/mongo:/docker-entrypoint-initdb.d - mongo_data:/data/db redis: image: redis:8.4-alpine networks: - bot ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "--raw", "ping"] interval: 5s retries: 5 timeout: 10s start_period: 2s volumes: - redis_data:/data networks: bot: driver: bridge volumes: postgres_data: mongo_data: redis_data: