Saya memiliki persyaratan yang sama untuk menjalankan tumpukan LAMP, Mongo DB, dan layanan saya sendiri
Docker adalah virtualisasi berbasis OS, itulah sebabnya ia mengisolasi wadahnya di sekitar proses yang sedang berjalan, oleh karena itu membutuhkan setidaknya satu proses yang berjalan di FOREGROUND.
Jadi, Anda memberikan skrip startup Anda sendiri sebagai titik masuk, sehingga skrip startup Anda menjadi skrip gambar Docker yang diperluas, di mana Anda dapat menumpuk sejumlah layanan sejauh SETIDAKNYA SATU LAYANAN TERLALU MULAI YANG DIMULAI, YANG TERLALU MENUJU AKHIR
Jadi file gambar Docker saya memiliki dua baris di bawah ini pada akhirnya:
COPY myStartupScript.sh /usr/local/myscripts/myStartupScript.sh
CMD ["/bin/bash", "/usr/local/myscripts/myStartupScript.sh"]
Dalam skrip saya, saya menjalankan semua MySQL, MongoDB, Tomcat dll. Pada akhirnya saya menjalankan Apache saya sebagai utas foreground.
source /etc/apache2/envvars
/usr/sbin/apache2 -DFOREGROUND
Ini memungkinkan saya untuk memulai semua layanan saya dan menjaga wadah tetap hidup dengan layanan terakhir mulai di latar depan
Semoga ini bisa membantu
UPDATE : Sejak saya terakhir menjawab pertanyaan ini, hal-hal baru telah muncul seperti penulisan Docker , yang dapat membantu Anda menjalankan setiap layanan pada wadahnya sendiri, namun mengikat semuanya bersama-sama sebagai dependensi di antara layanan-layanan tersebut, cobalah mengetahui lebih lanjut tentang komposisi docker dan gunakan, itu cara yang lebih elegan kecuali jika kebutuhan Anda tidak cocok dengannya.