services: im_mysql: image: mysql:8.0 container_name: im_mysql environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: spider MYSQL_CHARACTER_SET_SERVER: utf8mb4 MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci ports: - "3307:3306" volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot123"] interval: 10s timeout: 5s retries: 10 start_period: 300s networks: - chat_im_network im_redis: image: redis:7-alpine container_name: im_redis ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 5 networks: - chat_im_network api: build: context: .. dockerfile: deploy/Dockerfile.api container_name: spider_api ports: - "8200:8080" volumes: - ../configs:/app/configs - ../sessions:/app/sessions environment: - GIN_MODE=release - TG_SECRET_KEY=${TG_SECRET_KEY:-d9RkIHw7wLaa5Qx+B7/QOw5K6+bW67Ife4UK91h4Z2Q=} depends_on: im_mysql: condition: service_healthy im_redis: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "wget", "-q", "-O-", "http://localhost:8080/ping"] interval: 15s timeout: 5s retries: 3 start_period: 120s networks: - chat_im_network web: build: context: .. dockerfile: deploy/Dockerfile.web container_name: spider_web ports: - "8300:80" depends_on: api: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "curl", "-sf", "http://localhost:80/"] interval: 30s timeout: 5s retries: 3 networks: - chat_im_network networks: chat_im_network: driver: bridge volumes: mysql_data: redis_data: