如何仅在另一个活动映像完成任务后运行docker映像?
我有以下配置:如何仅在另一个活动映像完成任务后运行docker映像?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我有以下配置: 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: MYSQ
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映像拒绝来自迁移工具映像的连接。
一切正常,只有在db服务插入完成之后,但此操作通常需要几分钟
我需要一种方法来控制第二个映像的开始(迁移工具),只有在第一个映像中完成所有插入之后。或者,对于所描述的场景,可能有更好的解决方案。谢谢。您可以创建一个,例如:
healthcheck:
测试:[“CMD”、“mysqladmin”、“ping”、“-h”、“localhost”]
间隔时间:1m30s
超时时间:10秒
重试次数:3次
启动时间:40秒
Compose在这方面做得并不好:它没有内置的支持来等待其他容器准备就绪,或者等待长时间运行的容器通过某个点,并且它通常希望所有容器都是长时间运行的,而不是面向任务的。可能会给你一些灵感;这些技术通常可以在撰写上下文之外重用。这是否有用