Home
|
Posts
|
About

docker等待问题

上次更新: Wednesday, April 23, 2025 9:12 PM


docker中如何让一个服务等待另一个服务成功运行后再启动?

通过如下代码配置mysql的healthycheck

  mysql:
    container_name: mysql
    image: 
      mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: ...
      MYSQL_DATABASE: ...
    volumes:
       - ./volumes/mysql:/var/lib/mysql
    ports:
      - "3306:3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "--host=localhost", "--user=...", "--password=..."]
      interval: 30s
      timeout: 20s
      retries: 3

通过如下代码配置等待mysql正常运行后再启动api服务

 api:
    container_name: api
    build:
      context: api
      dockerfile: Dockerfile
    command: ["sh", "-c", "python -m script.init_sql_base_data && fastapi run main.py --proxy-headers --host 0.0.0.0 --port 8001"]
    volumes:
      - ./api:/app
    depends_on:
      mysql:
        condition: service_healt
    env_file:
      - ./api/.env.development

CC BY-NC-SA 4.0