services: mongodb: image: mongodb/mongodb-community-server container_name: tort-mongodb restart: always environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASS} ports: - "127.0.0.1:${MONGO_PORT}:27017" networks: - tort-net healthcheck: test: [ "CMD", "mongosh", "--username", "${MONGO_USER}", "--password", "${MONGO_PASS}", "--eval", "db.runCommand({ ping: 1 })" ] interval: 10s timeout: 5s retries: 3 rabbitmq: image: rabbitmq:3.13-management-alpine container_name: tort-rabbitmq restart: always environment: RABBITMQ_DEFAULT_USER: ${RABBIT_USER} RABBITMQ_DEFAULT_PASS: ${RABBIT_PASS} ports: - "127.0.0.1:5672:5672" - "127.0.0.1:15672:15672" networks: - tort-net healthcheck: test: [ "CMD", "rabbitmq-diagnostics", "-q", "ping" ] interval: 10s timeout: 5s retries: 3 backend: build: context: ./app dockerfile: dockerfile.app image: tort-backend:latest container_name: tort-backend restart: always depends_on: mongodb: condition: service_healthy rabbitmq: condition: service_healthy environment: MONGO_HOST: mongodb MONGO_PORT: "27017" MONGO_USER: ${MONGO_USER} MONGO_PASS: ${MONGO_PASS} RABBIT_HOST: rabbitmq RABBIT_PORT: "5672" RABBIT_USER: ${RABBIT_USER} RABBIT_PASS: ${RABBIT_PASS} MODERATION_SECRET: ${MODERATION_SECRET} DISABLE_DOCS: ${DISABLE_DOCS:-true} LOG_LEVEL: ${LOG_LEVEL:-INFO} ports: - "127.0.0.1:5000:5000" networks: - tort-net tg-bot: build: context: ./app dockerfile: dockerfile.bot image: tort-tg-bot:latest container_name: tort-tg-bot restart: always depends_on: rabbitmq: condition: service_healthy backend: condition: service_started environment: TG_BOT_TOKEN: ${TG_BOT_TOKEN} TG_ADMIN_CHAT_ID: ${TG_ADMIN_CHAT_ID} API_BASE_URL: http://backend:5000 MODERATION_SECRET: ${MODERATION_SECRET} RABBIT_HOST: rabbitmq RABBIT_PORT: "5672" RABBIT_USER: ${RABBIT_USER} RABBIT_PASS: ${RABBIT_PASS} LOG_LEVEL: ${LOG_LEVEL:-INFO} networks: - tort-net networks: tort-net: driver: bridge