我如何在单个docker swarm节点上(从docker-compose.yml
运行docker堆栈),该节点在系统重启时自动启动?
我正在使用docker-compose来组合多个服务的应用程序,然后使用docker stack deploy
将其部署在服务器上的单个实例docker swarm实例上。
在我的docker-compose.yml
中,我通过重启策略定义了服务:
deploy:
restart_policy:
condition: any
delay: 5s
max_attempts: 3
window: 120s
placement:
constraints: [node.role == manager]
哪个恕我直言应该强制服务始终运行/重新启动。但是,当重新启动服务器/ docker守护程序时,服务不会启动。有一些简单的方法可以做到这一点吗?
docker service list
将显示:
ID NAME MODE REPLICAS IMAGE PORTS
s9gg88ul584t finalyzer-prod_backend replicated 0/1 registry.gitlab.com/hpoul/finalyzer/finalyzer-backend:latest *:8081->8080/tcp
vb9iwg7zcwxd finalyzer-prod_mongoadmin replicated 0/1 mrvautin/adminmongo:latest *:8082->1234/tcp
qtasgtqi7m0l finalyzer-prod_mongodb replicated 0/1 mongo@sha256:232dfea36769772372e1784c2248bba53c6bdf0893d82375a3b66c09962b5af9
wdnrtlbe8jpw finalyzer-prod_pgdb replicated 0/1 postgres@sha256:73d065c344b419ce97bba953c7887c7deead75e0998053518938231cd7beb22c
,因此它认识到它应该运行1个节点,但不会按比例放大。强制docker swarm,service或docker stack在服务器重启(或docker daemon重启)时将所有配置的服务扩展到其配置值的正确方法是什么?