在放大和缩小时控制docker图像

在放大和缩小时控制docker图像,docker,nginx,docker-compose,scale,Docker,Nginx,Docker Compose,Scale,假设我们有一个运行在docker容器中的微服务 现在,为了启动此服务,它使用了安装在主机卷上的缓存,该主机卷由所有用户共享 同一微服务的其他docker映像。在应用程序中构建这个缓存需要10分钟,然后应用程序就可以准备好为请求提供服务 但当我们放大缩小时,这个场景就失败了, 假设我正在扩展容器,但它仍然没有完全扩展,因为我们需要等待 来构建缓存 您建议如何处理这种情况 在docker服务的字体中,我们计划使用Nginx来平衡请求的负载 提前感谢如果我理解正确,您想知道您的容器何时完全启动并运行。

假设我们有一个运行在docker容器中的微服务

现在,为了启动此服务,它使用了安装在主机卷上的缓存,该主机卷由所有用户共享 同一微服务的其他docker映像。在应用程序中构建这个缓存需要10分钟,然后应用程序就可以准备好为请求提供服务

但当我们放大缩小时,这个场景就失败了, 假设我正在扩展容器,但它仍然没有完全扩展,因为我们需要等待 来构建缓存

您建议如何处理这种情况

在docker服务的字体中,我们计划使用Nginx来平衡请求的负载


提前感谢

如果我理解正确,您想知道您的容器何时完全启动并运行。一个选择可能是选择。此功能是在Docker 1.12中添加的

说明(来源):

运行状况检查将首先在容器启动后的间隔秒运行,然后在前一次检查完成后的间隔秒再次运行

如果单次运行检查所需时间超过超时秒,则认为检查失败

如果容器的运行状况检查连续失败,则会被视为
不健康
。 在那里,您可以指定运行任何命令来检查服务器状态

可以使用
inspect
-命令检查容器的运行状况

docker inspect --format='{{json .State.Health}}' <container-id>
docker-inspect--format='{{json.State.Health}'

此功能还将“(健康)”信息添加到
docker ps

中的状态,因此,您需要知道docker microservice何时完全启动并运行?我拍对了吗?缓存里有什么?您可以在使用时动态构建它,还是在映像中构建它的固定副本?我试图大幅缩短启动时间,消除对共享存储的依赖,但这听起来可能是一次重大的重新设计。不完全是,容器启动后处于正常状态,但它仍在容器内构建缓存,当它构建缓存时,我们需要确保当我们扩展容器时,请求不会到达新的容器。你读过文档了吗?您可以指定在容器内定期运行的命令。这可用于检查您的微服务是否已启动。例如。检查服务器是否可访问的
curl
ping
或检查
lock files
等。通过检查状态(即使可以从其他容器中执行此操作,请参阅),您可以判断服务是否准备就绪。