depends_on doesn't wait for another service in docker-compose 1.22.0

前端 未结 2 806
醉话见心
醉话见心 2021-01-05 18:43

My current docker-compose.yml -

# This docker-compose file uses \'.env\' file present in the current directory, 
# for database credentials.         


        
2条回答
  •  情书的邮戳
    2021-01-05 19:00

    depends_on just guaranteed that database service run before web service. To run web service after database is ready, use wait_for_it.sh script https://docs.docker.com/compose/startup-order/ For example, i have a docker-compose.yml file with two services: app and db, and i want to run container app after db service are ready:

    docker-compose.yml

    version: "2"
    services:
      app:
        image: employee-jdbc
        ports:
          - "8080:8080"
        networks:
          - employee-mysql
        depends_on:
          - mysqldb
        container_name: employee-jdbc
      db:
        image: mysql:5.7
        networks:
          - employee-mysql
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - MYSQL_DATABASE=bootdb  
        container_name: mysqldb
    networks:
      employee-mysql:
        external: true
    

    In Dockerfile to build employee-jdbc image:

    Dockerfile

    FROM openjdk:8
    COPY ./target/*.jar ROOT.jar
    COPY wait-for-it.sh /wait-for-it.sh
    RUN chmod +x /wait-for-it.sh
    ENTRYPOINT ["./wait-for-it.sh","db:3306","--","java","-jar","ROOT.jar"]
    

    wait_for_it.sh file you can download at: https://github.com/vishnubob/wait-for-it

提交回复
热议问题