运行docker stack deploy
将一些服务部署到集群后,是否可以通过编程方式测试所有容器是否正确启动?
目的是在分阶段CI / CD管道中验证容器是否正在实际运行并且在启动时没有失败。通过restart_policy
禁用了重新启动。
我正在查看docker stack services
,replicas
列可否用于此目的?
$ docker stack services --format "{{.ID}} {{.Replicas}}" my-stack-name
lxoksqmag0qb 0/1
ovqqnya8ato4 0/1
答案 0 :(得分:1)
是的,有很多方法可以做到,但是它是手动的,您必须非常熟悉docker cli。 Docker没有提供一种简单的内置方法来验证docker stack deploy
是否成功。 There is an open issue about it。
对我们来说幸运的是,社区创建了一些工具来实现Docker在这方面的缺点。一些最著名的:
sure-deploy的作者Issuu拥有a very good article describing this issue。
答案 1 :(得分:0)
通常在CI / CD中,我看到每个人都使用docker或docker-compose。容器在docker中的运行方式与docker swarm方面的运行方式相同,即“该容器是否按预期方式自行工作”。
话虽如此,如果您仍然想使用swarm在多层解决方案中进行集成测试,则可以在自动化中做各种事情。请注意,所有这些操作都将在单个节点上完成,以简化测试(docker事件不会从所有节点提取节点事件,因此对于ci / cd而言,跟踪单个节点要容易得多):
docker events -f service=<service-name>
确保容器不会死。docker events
中看到它们成功还是失败。您可以将它们放在Dockerfiles,service create commands和stack/compose files中。 Here's some great examples。docker inspect <service-id or task-id>
中得到一些帮助