Tình cờ lượt lờ xem các sản phẩm docker thì biết tới Supervisord, dù nó đã ra mắt được hơn 10 năm 😀 công dụng của nó rất đơn giản, Supervisord là một hệ thống quản lý tiến trình (process management system) nói dễ hiểu là nó kiểm tra các các dịch vụ trên server như PHP, Mariadb, Caddy … thấy chạy lỗi, sập thì tự khởi động dịch vụ lại 😀 đại khái giống ý tưởng cái bash script ngày xưa mình viết, cũng khá khó đỡ là sao ngày xưa không search ra thèng này mà phải ngồi viết bash script làm gì 🙁
Do nó chạy ở cấp độ hệ thống, nên cài vào tự chạy, mình thử sơ sơ thì thấy vừa tắt dịch vụ 1 phát là nó tự khởi động lại ngay, tầm 1s gì đó thôi
[supervisord] nodaemon=true logfile=/dev/null logfile_maxbytes=0 pidfile=/run/supervisord.pid [program:php-fpm] command=php-fpm autorestart=true autostart=true
Việc tích hợp vào 1 images có sẵn cũng khá đơn giản, cài supervisor vào, chép cấu hình, sau đó chạy để khởi động Supervisord là xong
# Sử dụng image chính thức của Caddy từ Docker Hub FROM caddy:2.8.4-alpine # Cài đặt các gói cần thiết RUN apk add --no-cache \ supervisor # Sao chép file supervisord.conf vào container COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf # Lệnh CMD để khởi động supervisord khi container chạy CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] EXPOSE 80 EXPOSE 443 EXPOSE 2019
Cụ thể các config thì bạn có thể google, trên các file docker thì mình thì nhét đúng 2 dòng autorestart
và autostart
vào thôi 😀 bạn nào quan tâm có thể xem các cấu hình Supervisord đang dùng cho PHP, Mariadb, Caddy tại đây
Mình hay dùng trực tiếp VPS đang chạy để build và tạo images lên thẳng docker hub, cũng ít để ý cái gì, cho tới 1 hôm ngồi chuyển qua lại giữa nhiều phần cứng arm64 , amd64 thì tự dưng thấy chạy lỗi =)) may sao đọc lỗi cũng hiểu là do không tương thích
Google thì thấy mọi người nói đủ cách, đơn giản nhất là dùng Docker Desktop rồi tạo images, nó hỗ trợ nhiều kiến trúc phần cứng khác nhau, mình thì chỉ mới biết qua AMD và ARM, nên cũng chỉ làm 2 bản chạy trên này, tiện thể viết lại bài này để nhớ, chứ thiệt vài năm sau quên sạch
Trên Docker Desktop ấn vào Terminal ở góc phải bên dưới, sau đó copy các lệnh vào như bình thường
Lần đầu sử dụng thì phải tạo buildx 1 cấu hình tên là mybuilder
docker buildx create --name mybuilder docker buildx use mybuilder
Nó sẽ hỗ trợ Multi-Platform, sau khi có mybuilder riêng rồi thì cứ thế copy paste tương tự như bình thường, bổ xung thêm platform=linux/arm64,linux/amd64 ở cuối
docker buildx build --tag bibica/caddy-supervisord-alpine -o type=image --platform=linux/arm64,linux/amd64 . docker buildx build --push --tag bibica/caddy-supervisord-alpine --platform=linux/arm64,linux/amd64 . docker buildx build --tag bibica/mariadb-supervisord-alpine -o type=image --platform=linux/arm64,linux/amd64 . docker buildx build --push --tag bibica/mariadb-supervisord-alpine --platform=linux/arm64,linux/amd64 . docker buildx build --tag bibica/php-supervisord-alpine -o type=image --platform=linux/arm64,linux/amd64 . docker buildx build --push --tag bibica/php-supervisord-alpine --platform=linux/arm64,linux/amd64 .
Thành quả là giờ khi upload lên docker hub, images của chúng ta sẽ có tới 2 bản lận 😀 VPS ARM hay AMD đều cài đặt được bình thường
Quay lại về Supervisord 😀 kiểm tra sơ bộ thì thấy việc cài đặt và hoạt động bình thường, ăn CPU không đáng kể lắm, đa phần 0% 😀
Thử tắt PHP đi thì thấy log báo sau 1s là chạy lại, bản trên docker thì mình tắt lưu log, vì không cần xem ở đó
Khá là hài lòng, thực tế bản bash script cũ mình dùng cũng gần 1 năm, hiệu quả cũng tương tự như Supervisord, ăn phần cứng rất ít, có điều trên docker, việc cấu hình lỉnh kỉnh quá là phiền, nên cài Supervisord vào cho nhanh gọn, đỡ phải nhớ hay quản lý nhiều
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!