Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สิ่งที่ควรคำนึงสำหรับการสร้าง Docker Image กับ Java

$
0
0

มีโอกาสต้องนำ Docker มาใช้ในระบบงานที่พัฒนาด้วยภาษา Java จากการลงมือทำพบว่า มันไม่ใช่เรื่องง่ายเลย สำหรับการนำระบบงานที่พัฒนาด้วยภาษา Java มาใส่ในโลกของ Container ดังนั้นจึงทำการสรุปสิ่งที่ต้องคำนึงไว้นิดหน่อย น่าจะเป็นประโยชน์สำหรับคนที่กำลังจะเริ่มนะ

1. เริ่มด้วยการเลือก Image ของ JDK (Java Development Kit) ที่มีขนาดเล็ก ๆ

จากการทดลองใช้ image จาก OpenJDK 8 พบว่า
  • OpenJDK แบบ default ซึ่งใช้ os คือ Debian 8 Jessie มีขนาด 643.2 MB (สำหรับ JRE มีขนาด 107.9 MB)
  • OpenJDK แบบใช้ os คือ alpine มีขนาด 145 MB (สำหรับ JRE มีขนาด 107.9 MB)
สิ่งที่คำนึงคือ ขนาดของ image ที่เลือกใช้เป็น base ต้องมีขนาดเล็ก ๆ ไว้ก่อน แต่จัดการได้นะ
จากนั้นเรื่องของ OS (Operating System) ก็สำคัญ จากข้างต้นจะเห็นได้ว่า แต่ละ OS นั้นมีขนาดที่แตกต่างกัน
  • CentOS มีขนาดประมาณ 196 MB
  • Ubuntu มีขนาดประมาณ 127 MB
  • Debian มีขนาดประมาณ 123 MB
  • Alpine มีขนาดประมาณ 5 MB
  • BusyBox มีขนาดประมาณ 1 MB
แนะนำให้เลือก OS ที่มีขนาดเล็ก และ คุณสามารถจัดการได้ง่าย (รู้จักมันดี) เนื่องจากต้องทำการดูแลรักษา เนื่องจากต้องทำการ update version ล่าสุดอยู่อย่างเสมอ ทั้ง OS และ dependency ต่าง ๆ ถ้าเป็น commercial OS ก็ต้องจัดการกันอีกแบบ ปล. สำหรับ Oracle’s JDK นั้นก็มี issue เรื่อง license agreement เหมือนกันนะ ถ้าจะทำการลบไฟล์ที่ไม่ได้ใช้งานออกไป ซึ่งช่วยทำให้ขนาดของ image ลดลงไปอย่างมากมาย ลองไปอ่านบทความนี้เพิ่มได้ Running Java on Docker? You're Breaking the Law

2. ก่อนทำการสร้าง image นั้นใน folder ที่จะสร้างให้มีเฉพาะสิ่งที่ต้องการเท่านั้น

ไฟล์หรือ folder อะไรที่ไม่จำเป็นต่อการสร้าง image ก็ให้ลบทิ้งไปซะ หรือทำการใส่ไว้ในไฟล์ .dockerignore​ ซะ ตัวอย่างสำหรับ Maven project ก็ให้เอา folder target ออกไปซะ หรือพวก configuration ของ IDE หรือพวก configuration ในแต่ละเครื่อง

3. การสร้าง image ของตัวเอง

หลังจากเลือก based image ได้แล้ว ส่วนใหญ่แล้วนั้นเรามักชอบสร้าง image เป็นของตัวเอง ซึ่งจะทำการ configuration ค่าต่าง ๆ ที่ต้องการใช้ แต่แนะนำว่าอย่า hard code ไว้ใน image นะ เช่นทำการกำหนดค่า หรือ path ต่าง ๆ ไว้ในไฟล์ Dockerfile เลย ซึ่งจะทำให้ image ไม่มีความยึดหยุ่น ดังนั้นถ้าอะไรที่ต้องเปลี่ยนบ่อย ๆ ก็ map volume ออกมาซะ หรือกำหนดไฟล์ไว้ให้แก้ไขเลย จะได้จัดการง่ายขึ้นไปอีกนะ

4. เข้าไปดูใน image หน่อยว่าเป็นอย่างไร ?

เพื่อตรวจสอบให้แน่ใจว่า image ที่สร้างขึ้นมา มีโครงสร้างเป็นไปตามที่คาดหวังหรือไม่ หรือเข้าไปแก้ไขไฟล์ต่าง ๆ (ไม่ควรทำนะ สำหรับ image ที่ใช้กันเยอะ ๆ) หรือทำการ debug นั่นเอง สำหรับ container ที่ทำงานอยู่แล้ว สามารถเข้าไปโดยใช้คำสั่ง [code] $docker exec -it <container id> bash [/code] แต่ถ้ายังไม่มี container ก็ใช้คำสั่ง [code] $docker run -it <image> bash [/code] เพียงเท่านี้ก็พอทำให้เราเริ่มต้นใช้ Docker กับ Java ได้แล้วนะ ยังมีเรื่องต้องให้ทำอีกเยอะเลย

Viewing all articles
Browse latest Browse all 1997

Trending Articles