بهذه الطريقة ، نقوم بتكوين التطبيق بحيث يسجل إلى ملف ، وبشكل مستمر tail -f ذلك. لحسن الحظ, tail يمكن قبول --pid PID: سيخرج عند خروج العملية المحددة. وضعنا $$ هناك: بيد من قذيفة الحالية.
كخطوة أخيرة ، فإن التطبيق الذي تم إطلاقه هو exec'إد ، وهو ما يعني أن قذيفة الحالية يتم استبدال تماما مع هذا التطبيق.
ملاحظة: باستخدام tail -F نحن قائمة أسماء الملفات ، وسوف قراءتها حتى لو كانت تظهر في وقت لاحق!
وأخيرا ، فإن دوكيرفيل أضيق الحدود:
FROM ubuntuADD run.sh /root/run.shCMD ['/root/run.sh']
ملاحظة: للعمل على بعض الغريب للغاية tail -f السلوك (الذي يقول " تم استبداله بملف بعيد. التخلي عن هذا الاسم") حاولت نهج آخر: يتم إنشاء جميع ملفات السجل المعروفة & أمبير; اقتطاع على بدء: بهذه الطريقة أنا ضمان وجودها, وبعد ذلك فقط tail ذيل لهم:
لقد كان فقط لحل هذه المشكلة مع أباتشي 2 ، وتصارع مع استخدام كوستوملوغ لمحاولة إعادة توجيه إلى /proc/1/fd/1 ولكن لا يمكن الحصول على هذا العمل. في تنفيذ بلدي ، أباتشي لم يكن يعمل كما pid 1، إذن إجابة كوليبتو لم يعمل كما هو. نهج بيتر بدا مقنعا ، لذلك أنا دمج اثنين والنتيجة تعمل بشكل رائع:
من الناحية الفنية هذا يحافظ على أباتشي access.log و error.log الذهاب الى stdout و stderr بقدر ما يتعلق الأمر جامع سجل عامل الميناء، ولكن سيكون من الرائع إذا كانت هناك طريقة لفصل الاثنين خارج الحاوية ، مثل التبديل ل docker logs من شأنه أن يظهر واحد فقط أو آخر...