首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >docker:在完全初始化依赖MySQL容器之前依赖容器运行

docker:在完全初始化依赖MySQL容器之前依赖容器运行
EN

Stack Overflow用户
提问于 2020-02-05 15:30:02
回答 1查看 2.8K关注 0票数 1

我有一个码头-撰写文件如下所示,它有2个容器。一个是Python,另一个是MySQL爬虫应用程序,它可以读取/写入数据库。当我做docker-compose up时,我看到:

  1. 数据库容器构建
  2. ,然后构建应用程序容器
  3. ,然后运行app容器上的CMD (例如启动爬虫)
  4. ,然后根据停靠-组合文件中的环境变量在DB容器中初始化数据库。

g 210

我的问题是,为什么在DB容器中创建数据库之前,我的爬虫脚本还在运行?如何确保在运行爬虫脚本之前已经创建了数据库?

代码语言:javascript
运行
复制
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/
EN

回答 1

Stack Overflow用户

发布于 2020-02-05 15:42:06

仅从代码中检查的最佳选项。另外,如果您可以使用compose 2,但是可以阅读文档:“在使用depends_on时,有几件事情需要注意:

depends_on不会等待db和redis在启动web之前“做好准备”--直到它们已经启动。如果您需要等待服务准备就绪,请参阅控制启动顺序以获得有关此问题的更多信息和解决该问题的策略。

第3版不再支持depends_on的条件形式。

在使用版本3编写文件以群模式部署堆栈时,depends_on选项将被忽略。“

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60079114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档