docker - 如何仅在另一个活动图像完成任务后才运行 docker 图像?
问题描述
我有以下配置:
services:
db:
image: mysql:5.6
command: --default-authentication-plugin=mysql_native_password --sql-mode=""
volumes:
- ./schema:/docker-entrypoint-initdb.d
ports:
- 3309:3306
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
migration-tool:
depends_on:
- db
build:
context: ../MigrationTool.MigrationTool/
dockerfile: Dockerfile.migrate
db 服务对数据库执行了一些长时间运行的插入操作,但是迁移工具服务还希望在 db 服务映像上创建一个数据库(带有插入),这将导致迁移工具服务出现一些异常,准确地说是 mysql db image 拒绝来自 migraton-tool 图像的连接。一切正常,只有在数据库服务插入完成后,但此操作通常需要几分钟。
只有在第一个图像中完成所有插入之后,我才需要一种方法来控制第二个图像(迁移工具)的开始。或者也许对所描述的场景有更好的解决方案。谢谢。
解决方案
您可以创建一个healthcheck,例如:
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
推荐阅读
- java - 错误:java.lang.NoClassDefFoundError:kotlin/jvm/internal/Intrinsics [javafx]
- ios - 可以访问私有 cocoapod 子文件夹中的类
- django - 'ManyToManyDescriptor'对象在django 2中没有属性'all'
- wordpress - WordPress 主题目录中的 url 被重定向/破坏
- aem - 为什么在 AEM 社区中单击“新文章”不起作用?
- android - 将相同的标记引用传递给 SpannableString.setSpan 会导致覆盖以前的跨度
- python - TypeError:不支持的操作数类型 -:'int' 和 'str'TypeError:
- c++ - 非特化 C++ 模板参数
- mysql - 获取有关mysql中循环的信息
- python - Python - 在变量中提示