Tôi chạy container docker với người giám sát như thế này:
Dockerfile
CMD ["/run.sh"]
chạy
#!/usr/bin/env bash
exec supervisord -n
giám sát-serf.conf
[group:job]
programs=serf,producer
[program:serf]
command=/start-serf-agent.sh
numprocs=1
autostart=true
autorestart=unexpected
stopasgroup=true
killasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
bắt đầu -sf-agent.sh
#!/bin/bash
exec serf agent --join=serf:7946 -tag role=producer
giám sát viên
[program:producer]
command=/start.sh
numprocs=1
stopasgroup=true
killasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
bắt đầu
#!/bin/bash
exec /producer --project=${NAME}
Sau khi nhà sản xuất dừng lại, tôi đã nhận được:
producer_1 | 2016/02/29 21:59:50 [INFO] serf: EventMemberLeave: 7c4fbc80af97 172.19.0.2
producer_1 | 2016/02/29 21:59:51 INF 1 stopping
producer_1 | 2016/02/29 21:59:51 INF 1 exiting router
producer_1 | 2016-02-29 21:59:51,281 INFO exited: producer (exit status 0; expected)
producer_1 | 2016/02/29 21:59:51 [INFO] agent: Received event: member-leave
nhưng serf-agent giữ container ở trạng thái chạy. Tôi muốn dừng bộ chứa Docker khi nhà sản xuất hoàn thành công việc của mình đúng với trạng thái 0. Tôi đã cố gắng tham gia các quy trình vào một nhóm nhưng dường như không hoạt động. Các bạn, tôi đã bỏ qua những gì? Làm ơn giúp tôi với!