Dockerfile ACMP Supervisord Alpine

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 autorestartautostart 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

2024 08 05 14 05 50

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

2024 08 05 14 10 47

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 .

2024 08 05 14 12 57

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% 😀

2024 08 05 14 17 32

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 ở đó

2024 08 05 13 54 27

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


Related Posts

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ị!