version: '3.8' services: mysql: image: mysql:8.0 container_name: blog-mysql restart: always environment: MYSQL_ROOT_PASSWORD: root123456 MYSQL_DATABASE: my_blog TZ: Asia/Shanghai command: - --default-authentication-plugin=mysql_native_password - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci ports: - "3307:3306" volumes: - mysql_data:/var/lib/mysql - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot123456"] interval: 5s timeout: 5s retries: 10 backend: build: ./backend container_name: blog-backend restart: always depends_on: mysql: condition: service_healthy environment: DB_HOST: mysql DB_PORT: 3306 DB_NAME: my_blog DB_USER: root DB_PASSWORD: root123456 TZ: Asia/Shanghai ports: - "8089:8080" frontend: build: ./frontend container_name: blog-frontend restart: always depends_on: - backend ports: - "8088:80" volumes: mysql_data: