使用docker-compose depends_on时,Docker服务重新启动而没有顺序

时间:2018-03-02 06:34:53

标签: docker docker-compose docker-windows

我试图在docker for windows中设置Sonarqube服务,并使用mysql作为数据库。

我正在使用下面的撰写文件,并使用撰写文件depends_on来控制启动顺序:

分贝 - >的 sonarqube

但是当docker services / windows重新启动时,容器启动时没有顺序。 当sonarqube尝试连接mysql但mysql服务没先启动时会出错。

version: '3'

services:
  sonarqube:
    image: sonarqube:6.5
    container_name: sonarqube
    restart: always
    environment:
      - SONARQUBE_JDBC_URL=jdbc:mysql://db:3306/sonar?useSSL=true&useUnicode=true&characterEncoding=utf8
      - SONARQUBE_JDBC_USERNAME=sonar
      - SONARQUBE_JDBC_PASSWORD=sonar
    ports:
      - 9000:9000
      - 9002:9002
      - 9092:9092
    volumes:
      - ../../volumes/data/sonarqube/conf:/opt/sonarqube/conf
      - ../../volumes/data/sonarqube/data:/opt/sonarqube/data
      - ../../volumes/data/sonarqube/extensions:/opt/sonarqube/extensions
      - ../../volumes/data/sonarqube/lib/bundled-plugins:/opt/sonarqube/lib/bundled-plugins
    depends_on:
      - db

  grafana:
    container_name: grafana
    image: grafana/grafana
    ports:
      - 3000:3000
    volumes:
      - ../../volumes/data/grafana-storage:/var/lib/grafana
    restart: always
    depends_on:
      - db

  # mysql service for sonarqube & grafana
  db:
    image: mysql:5.7
    container_name: sonar-mysql
    restart: always
    environment:
      - MYSQL_DATABASE=sonar
      - MYSQL_USER=sonar
      - MYSQL_PASSWORD=sonar
      - MYSQL_ROOT_PASSWORD=Password1
      - MAX_ALLOWED_PACKET=13421772800
    volumes:
      - ../../volumes/data/mysql:/var/lib/mysql
    ports:
      - 3306:3306
    command: mysqld --max_allowed_packet=80M --federated --event_scheduler=1
  

在阅读了一些docker-compose官方文档后,   他们说最好的方法是检查应用程序代码,比如使用在线等待其他服务来更新入口点脚本然后启动应用程序。

我认为这是正确的方法,但我仍然想知道在docker服务重启时我们是否有任何方法可以控制容器启动顺序?

感谢。

0 个答案:

没有答案