الجمع بين Docker وTomcat

Aljm Byn Docker Wtomcat



Apache Tomcat هو خادم ويب مفتوح المصدر وحاوية servlet تم تطويره بواسطة مؤسسة Apache Software Foundation (ASF).

يقوم Tomcat بتنفيذ مواصفات Java Servlet وJavaServer Pages من Oracle ويوفر بيئة خادم ويب Java HTTP خالصة لتشغيل تعليمات Java البرمجية.







في هذا البرنامج التعليمي، سوف نتعلم كيفية الجمع بين Docker وTomcat لنشر تطبيق Tomcat 'hello World' باستخدام Tomcat كحاوية.



متطلبات:

لاتباع الإرشادات والتعليمات البرمجية المتوفرة في هذا البرنامج التعليمي واستخدامها بنجاح، تأكد من أن لديك ما يلي:



    1. تم تثبيت Docker Engine على جهازك المضيف
    2. تم تثبيت Java JDK على جهازك لاختبار كود Java الخاص بك (اختياري)
    3. محرر نصوص لتحرير التعليمات البرمجية المصدر وتكوينات Docker

مع استيفاء المتطلبات المحددة، يمكننا المتابعة ومعرفة كيفية نشر تطبيق Tomcat باستخدام Docker.





اسحب صورة Tomcat في Docker

لحسن الحظ، لا نحتاج إلى تكوين صورة أساسية تحتوي على كافة الأدوات اللازمة لتشغيل تطبيق Tomcat. يمكننا ببساطة استخدام صورة Tomcat من Docker Hub.

لسحب الصورة يمكننا تنفيذ الأمر كالتالي:



$ عامل ميناء سحب القط


إنشاء تطبيق Hello World

الخطوة التالية هي إنشاء تطبيق 'Hello World'. ابدأ بإنشاء دليل لتخزين كود المصدر الخاص بك والانتقال إلى الدليل.

$ mkdir مرحبا بالعالم && قرص مضغوط مرحبا بالعالم


داخل الدليل الجذر، قم بإنشاء مجلد webapp وقم بإنشاء مجلد WEB-INF بداخله.

يجب أن تبدو بنية الدليل الخاص بك كما يلي:

مرحبا بالعالم /
└── تطبيق الويب
└── معلومات الويب

3 الدلائل, 0 ملفات


بعد ذلك، انتقل إلى دليل WEB-INF وقم بإنشاء ملف 'web.xml' بالرمز التالي:

< ?xml إصدار = '1.0' التشفير = 'UTF-8' ؟ >
< التطبيق على شبكة الإنترنت com.xmlns = 'http://xmlns.jcp.org/xml/ns/javaee'
xmlns: xsi = 'http://www.w3.org/2001/XMLSchema-instance'
الحادي عشر: schemaLocation = 'http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd'
إصدار = '4.0' >
< servlet >
< اسم servlet > مرحبا بالعالم اسم servlet >
< فئة بريمج > HelloWorldServlet فئة بريمج >
servlet >
< رسم خرائط servlet >
< اسم servlet > مرحبا بالعالم اسم servlet >
< نمط URL >/ مرحبًا نمط URL >
رسم خرائط servlet >
التطبيق على شبكة الإنترنت >


احفظ الملف وأغلق المحرر.

بالعودة إلى نافذتك الطرفية، قم بإنشاء 'HelloWorldServlet.java' داخل دليل WEB-INF/classes.

$ mkdir الطبقات
$ يلمس HelloWorldServlet.java


أضف محتويات التطبيق كما هو موضح في ما يلي:

استيراد javax.servlet. * ;
استيراد javax.servlet.http. * ;
استيراد java.io. * ;

الطبقة العامة HelloWorldServlet تمتد إلى HttpServlet {
الفراغ العام doGet ( طلب HttpServletRequest، استجابة HttpServletResponse )
يلقي ServletException، IOException {
Response.setContentType ( 'نص/أتش تي أم أل' ) ;
طباعة الكاتب خارج = Response.getWriter ( ) ;
println ( '' ) ;
println ( 'Hello World Servlet' ) ;
println ( '<الجسم>' ) ;
println ( '

مرحبًا بالعالم!

'
) ;
println ( '' ) ;
}
}


يؤدي هذا إلى إعداد Tomcat servlet الأساسي الذي يطبع 'Hello World'.



تحديد ملف Dockerfile

الخطوة التالية بالنسبة لنا هي تحديد ملف Dockerfile لإنشاء صورة مخصصة تتضمن تطبيقنا 'Hello World'.

داخل الدليل الجذر، قم بإنشاء ملف جديد يسمى 'Dockerfile':







$ يلمس ~ / مرحبا بالعالم / ملف الإرساء


قم بتحرير الملف وإضافة التكوين كما يلي:

# قم بتعيين الصورة الأساسية لـ Tomcat
من القط: الأحدث

# انسخ تطبيق Hello World إلى دليل Tomcat webapps
ينسخ . / التطبيق على شبكة الإنترنت / usr / محلي / هر / تطبيقات الويب / تطبيقي
# فضح المنفذ 8080 لـ Tomcat
يفضح 8080


يجب أن يكون لديك تخطيط الدليل على النحو التالي:

مرحبا بالعالم
├── ملف الإرساء
└── تطبيق ويب
└── معلومات الويب
├── الطبقات
│   └── HelloWorldServlet.java
└── web.xml

4 الدلائل, 3 ملفات

بناء الصورة

بعد ذلك، نقوم بإنشاء صورة Tomcat المخصصة كما هو موضح في الأمر التالي:

$ بناء عامل ميناء تطبيق Tomcat .


قم بتشغيل الحاوية

بمجرد أن تصبح الصورة جاهزة، يمكننا تشغيل الحاوية من الصورة باستخدام الأمر كما يلي:

$ تشغيل عامل الميناء 8080 : 8080 --اسم Tomcat-container Tomcat-app


من المفترض أن يؤدي ذلك إلى إنشاء حاوية Tomcat من صورة تطبيق Tomcat التي أنشأناها في الخطوة السابقة وربطها بالمنفذ 8080 على الجهاز المضيف.

الوصول إلى التطبيق

افتح متصفح الويب وانتقل إلى . يجب أن تشاهد رسالة 'Hello, World!' الرسالة المعروضة في متصفحك

خاتمة

تهانينا! لقد نجحت في نشر تطبيق 'Hello World' في حاوية Dockerized Tomcat.