我有一个码头-撰写文件如下所示,它有2个容器。一个是Python,另一个是MySQL爬虫应用程序,它可以读取/写入数据库。当我做docker-compose up时,我看到:
g 210
我的问题是,为什么在DB容器中创建数据库之前,我的爬虫脚本还在运行?如何确保在运行爬虫脚本之前已经创建了数据库?
version: '3.7' 
services: 
    db:
        image: mysql:8
        restart: always
        environment: 
            MYSQL_DATABASE: my-database-name
            MYSQL_USER: root
            MYSQL_ROOT_PASSWORD: password
            MYSQL_PASSWORD: password
        ports:
            - "3308:3306"
        command: --default-authentication-plugin=mysql_native_password
    app:
        build:
            context: ./
            dockerfile: Dockerfile-crawler-dev
        depends_on: 
            - db
        environment: 
            MYSQL_DATABASE: my-database-name
            MYSQL_USER: root
            MYSQL_ROOT_PASSWORD: password
            MYSQL_PASSWORD: password
            MYSQL_HOST: db
            MYSQL_PORT: 3306
        volumes:
            - ./:/crawler/发布于 2020-02-05 15:42:06
仅从代码中检查的最佳选项。另外,如果您可以使用compose 2,但是可以阅读文档:“在使用depends_on时,有几件事情需要注意:
depends_on不会等待db和redis在启动web之前“做好准备”--直到它们已经启动。如果您需要等待服务准备就绪,请参阅控制启动顺序以获得有关此问题的更多信息和解决该问题的策略。
第3版不再支持depends_on的条件形式。
在使用版本3编写文件以群模式部署堆栈时,depends_on选项将被忽略。“
https://stackoverflow.com/questions/60079114
复制相似问题