如何指定Docker容器的启动顺序

Blade 未结 1 31

一、该问题的重现步骤是什么?

  1. 如何指定容器的启动顺序,让mysql先启动,nacos在mysql启动后再启动,以及其他应用容器在nacos成功启动后再启动?

在服务器在断电重启等情况下,nacos无法正常启动,其他容器也因为nacos容器没有启动而启动失败,同时服务器性能有限,多个容器同时启动会导致卡顿导致无法正常启动

2. 

3.


二、你期待的结果是什么?实际看到的又是什么?


希望容器之间的启动顺序可以指定,nacos在mysql成功启动后再启动,其他容器在nacos容器启动后启动。

目前实际运行结果是,mysql还没有正常启动,nacos和其他容器就都启动了,同时大量容器启动占用了服务器性能,导致nacos无法正常启动,进一步导致其他容器无法启动。


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 试试这种,通过健康检查来判断

    version: '3.8'
    
    services:
      mysql:
        image: mysql:8.0
        container_name: mysql
        environment:
          - MYSQL_ROOT_PASSWORD=your_password
          - MYSQL_DATABASE=nacos_config
        healthcheck:
          test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
          interval: 5s
          timeout: 5s
          retries: 5
          start_period: 30s
        
      nacos:
        image: nacos/nacos-server:latest
        container_name: nacos
        environment:
          - MODE=standalone
          - SPRING_DATASOURCE_PLATFORM=mysql
          - MYSQL_SERVICE_HOST=mysql
          - MYSQL_SERVICE_PORT=3306
          - MYSQL_SERVICE_USER=root
          - MYSQL_SERVICE_PASSWORD=your_password
          - MYSQL_SERVICE_DB_NAME=nacos_config
        depends_on:
          mysql:
            condition: service_healthy
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/readiness"]
          interval: 5s
          timeout: 5s
          retries: 5
          start_period: 30s
    
      your-app:
        image: your-app-image
        container_name: your-app
        depends_on:
          nacos:
            condition: service_healthy
        # 其他应用的配置...
    
      another-app:
        image: another-app-image
        container_name: another-app
        depends_on:
          nacos:
            condition: service_healthy
        # 其他应用的配置...


    0 讨论(0)
提交回复