services: app: build: . ports: - "8080:8080" env_file: - .env environment: TALKINGQ_MQTT_BROKER: mqtt TALKINGQ_MQTT_PORT: 1883 volumes: - ./assets:/app/assets - ./logs:/app/logs depends_on: mqtt: condition: service_started mysql: condition: service_healthy restart: unless-stopped networks: - talkingq-network backend_app: build: ../backend-v0.1 ports: - "8001:8001" env_file: - ../backend-v0.1/.env volumes: - ../backend-v0.1/app/assets:/app/assets - ../backend-v0.1/app/logs:/app/logs depends_on: mysql: condition: service_healthy restart: unless-stopped networks: - talkingq-network mysql: image: mysql:8.0 command: --default-authentication-plugin=caching_sha2_password restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}" MYSQL_DATABASE: talkingq MYSQL_USER: talkingq MYSQL_PASSWORD: "${MYSQL_PASSWORD}" TZ: Asia/Shanghai volumes: - mysql-data:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d - ./mysql/conf.d:/etc/mysql/conf.d healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "talkingq", "-p${MYSQL_PASSWORD}"] interval: 10s timeout: 5s retries: 5 networks: - talkingq-network mqtt: image: eclipse-mosquitto:2 ports: - "1883:1883" volumes: - ./mqtt/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro - mqtt-data:/mosquitto/data - mqtt-log:/mosquitto/log restart: unless-stopped networks: - talkingq-network volumes: mysql-data: mqtt-data: mqtt-log: networks: talkingq-network: driver: bridge