Apache Tomcat เป็นเว็บเซิร์ฟเวอร์โอเพ่นซอร์สและคอนเทนเนอร์เซิร์ฟเล็ตที่พัฒนาโดย Apache Software Foundation (ASF)
Tomcat ใช้ข้อกำหนด Java Servlet และ JavaServer Pages จาก Oracle และจัดเตรียมสภาพแวดล้อมเว็บเซิร์ฟเวอร์ Java HTTP ล้วนๆ เพื่อให้โค้ด Java ทำงาน
ในบทช่วยสอนนี้ เราจะได้เรียนรู้วิธีรวม Docker และ Tomcat เพื่อปรับใช้แอปพลิเคชัน Tomcat “hello world” โดยใช้ Tomcat เป็นคอนเทนเนอร์
ความต้องการ:
เพื่อให้ปฏิบัติตามและใช้คำแนะนำและรหัสที่ให้ไว้ในบทช่วยสอนนี้ให้สำเร็จ ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:
- ติดตั้ง Docker Engine บนเครื่องโฮสต์ของคุณ
- ติดตั้ง Java JDK บนเครื่องของคุณเพื่อทดสอบโค้ด Java ของคุณ (ไม่บังคับ)
- โปรแกรมแก้ไขข้อความเพื่อแก้ไขซอร์สโค้ดและการกำหนดค่านักเทียบท่า
เมื่อเป็นไปตามข้อกำหนดที่กำหนด เราสามารถดำเนินการต่อและเรียนรู้วิธีปรับใช้แอป Tomcat โดยใช้ Docker
ดึงภาพ Tomcat ใน Docker
โชคดีที่เราไม่จำเป็นต้องกำหนดค่าอิมเมจพื้นฐานที่มีเครื่องมือทั้งหมดเพื่อเรียกใช้แอปพลิเคชัน Tomcat เราสามารถใช้อิมเมจ Tomcat จาก Docker Hub ได้
ในการดึงรูปภาพ เราสามารถรันคำสั่งได้ดังนี้:
$ นักเทียบท่าดึงแมวตัวผู้
สร้างแอปพลิเคชัน Hello World
ขั้นตอนต่อไปคือการสร้างแอปพลิเคชัน “Hello World” เริ่มต้นด้วยการสร้างไดเร็กทอรีเพื่อจัดเก็บซอร์สโค้ดของคุณและนำทางไปยังไดเร็กทอรี
$ mkdir สวัสดีชาวโลก && ซีดี สวัสดีชาวโลก
ภายในไดเร็กทอรีราก ให้สร้างโฟลเดอร์ webapp และสร้างโฟลเดอร์ WEB-INF ภายในนั้น
โครงสร้างไดเร็กทอรีของคุณควรมีลักษณะดังนี้:
สวัสดีชาวโลก /└── เว็บแอป
└── เว็บ-INF
3 ไดเรกทอรี 0 ไฟล์
จากนั้น นำทางไปยังไดเร็กทอรี WEB-INF และสร้างไฟล์ “web.xml” ด้วยโค้ดต่อไปนี้:
< เว็บแอป xmlns = 'http://xmlns.jcp.org/xml/ns/javaee'
xmlns: xsi = 'http://www.w3.org/2001/XMLSchema-instance'
xsi: สคีมาสถานที่ตั้ง = 'http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd'
รุ่น = '4.0' >
< เซิร์ฟเล็ต >
< ชื่อเซิร์ฟเล็ต > สวัสดีชาวโลก ชื่อเซิร์ฟเล็ต >
< เซิร์ฟเล็ตคลาส > สวัสดีโลกเซิร์ฟเล็ต เซิร์ฟเล็ตคลาส >
เซิร์ฟเล็ต >
< การทำแผนที่เซิร์ฟเล็ต >
< ชื่อเซิร์ฟเล็ต > สวัสดีชาวโลก ชื่อเซิร์ฟเล็ต >
< รูปแบบ URL >/ สวัสดี รูปแบบ URL >
การทำแผนที่เซิร์ฟเล็ต >
เว็บแอป >
บันทึกไฟล์และปิดโปรแกรมแก้ไข
กลับไปที่หน้าต่างเทอร์มินัลของคุณ สร้าง “HelloWorldServlet.java” ภายในไดเร็กทอรี WEB-INF/classes
$ mkdir ชั้นเรียน$ สัมผัส HelloWorldServlet.java
เพิ่มเนื้อหาของแอปพลิเคชันดังแสดงต่อไปนี้:
นำเข้า javax.servlet.http * ;
นำเข้า java.io * ;
HelloWorldServlet คลาสสาธารณะขยาย HttpServlet {
โมฆะสาธารณะ doGet ( คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse )
พ่น ServletException, IOException {
response.setContentType ( 'ข้อความ/html' ) ;
PrintWriter ออก = response.getWriter ( ) ;
out.println ( '' ) ;
out.println ( '
out.println ( '<ร่างกาย>' ) ;
out.println ( '
สวัสดีชาวโลก!
' ) ;out.println ( 'ร่างกาย>' ) ;
}
}
นี่เป็นการตั้งค่าเซิร์ฟเล็ต Tomcat พื้นฐานที่พิมพ์ “Hello world”
กำหนด Dockerfile
ขั้นตอนต่อไปสำหรับเราคือการกำหนด Dockerfile เพื่อสร้างรูปภาพที่กำหนดเองซึ่งมีแอป “Hello World” ของเรา
ภายในไดเร็กทอรีราก ให้สร้างไฟล์ใหม่ชื่อ 'Dockerfile':
$ สัมผัส ~ / สวัสดีชาวโลก / Dockerfile
แก้ไขไฟล์และเพิ่มการกำหนดค่าดังนี้:
จาก Tomcat:ล่าสุด
# คัดลอกแอปพลิเคชัน Hello World ไปยังไดเรกทอรี Tomcat webapps
คัดลอก / เว็บแอป / เรา / ท้องถิ่น / แมวตัวผู้ / เว็บแอป / แอพของฉัน
# เปิดเผยพอร์ต 8080 สำหรับ Tomcat
เปิดเผย 8080
คุณควรมีโครงร่างไดเร็กทอรีดังนี้:
├── นักเทียบท่าไฟล์
└── เว็บแอป
└── เว็บ-INF
├── ชั้นเรียน
│ └── HelloWorldServlet.java
└── เว็บ.xml
4 ไดเรกทอรี 3 ไฟล์
สร้างภาพ
ต่อไป เราสร้างอิมเมจ Tomcat แบบกำหนดเองตามที่แสดงในคำสั่งต่อไปนี้:
$ สร้างนักเทียบท่า -t Tomcat-แอป
เรียกใช้คอนเทนเนอร์
เมื่อเราเตรียมอิมเมจเรียบร้อยแล้ว เราก็สามารถรันคอนเทนเนอร์จากอิมเมจได้โดยใช้คำสั่งดังนี้:
$ นักเทียบท่าวิ่ง -d -พี 8080 : : 8080 --ชื่อ tomcat-คอนเทนเนอร์ tomcat-app
สิ่งนี้ควรสร้างคอนเทนเนอร์ Tomcat จากอิมเมจแอป Tomcat ที่เราสร้างในขั้นตอนก่อนหน้า และผูกเข้ากับพอร์ต 8080 บนเครื่องโฮสต์
เข้าถึงแอปพลิเคชัน
เปิดเว็บเบราว์เซอร์แล้วไปที่ . คุณควรเห็นข้อความ “สวัสดีชาวโลก!” ข้อความที่แสดงในเบราว์เซอร์ของคุณ
บทสรุป
ยินดีด้วย! คุณปรับใช้แอปพลิเคชัน “Hello World” ในคอนเทนเนอร์ Dockerized Tomcat สำเร็จแล้ว