Tôi có yêu cầu tương tự là chạy LAMP stack, Mongo DB và các dịch vụ của riêng tôi
Docker là ảo hóa dựa trên hệ điều hành, đó là lý do tại sao nó cô lập vùng chứa của nó xung quanh một tiến trình đang chạy, do đó nó yêu cầu ít nhất một tiến trình đang chạy trong FOREGROUND.
Vì vậy, bạn cung cấp tập lệnh khởi động của riêng bạn làm điểm vào, do đó tập lệnh khởi động của bạn trở thành tập lệnh hình ảnh Docker mở rộng, trong đó bạn có thể xếp chồng bất kỳ số lượng dịch vụ nào cho đến khi dịch vụ BẮT ĐẦU MỘT LẦN BẮT ĐẦU, SAU KHI TOWARDS THE END
Vì vậy, tập tin hình ảnh Docker của tôi có hai dòng dưới đây:
COPY myStartupScript.sh /usr/local/myscripts/myStartupScript.sh
CMD ["/bin/bash", "/usr/local/myscripts/myStartupScript.sh"]
Trong kịch bản của tôi, tôi chạy tất cả MySQL, MongoDB, Tomcat, v.v ... Cuối cùng, tôi chạy Apache của tôi như một luồng tiền cảnh.
source /etc/apache2/envvars
/usr/sbin/apache2 -DFOREGROUND
Điều này cho phép tôi bắt đầu tất cả các dịch vụ của mình và giữ cho container tồn tại với dịch vụ cuối cùng bắt đầu ở phía trước
Hy vọng nó giúp
CẬP NHẬT : Kể từ lần cuối tôi trả lời câu hỏi này, những điều mới đã xuất hiện như Docker compose , có thể giúp bạn chạy từng dịch vụ trên container của chính nó, nhưng liên kết tất cả chúng lại với nhau như là sự phụ thuộc giữa các dịch vụ đó, hãy thử biết thêm về docker-compose và sử dụng nó, nó là cách thanh lịch hơn trừ khi nhu cầu của bạn không phù hợp với nó.