
Odoo เป็นซอฟต์แวร์ที่ชื่อเดิมคือ Open ERP ซึ่งตอนนี้ตัวมันเองมาถึง version 11 และมองตัวเองเป็นมากว่า ERP มาตั้งแต่เวอร์ชัน 8 แล้ว ในบทความนี้ผมได้ทำการทดลองติดตั้งและเปิดใช้บริการ Odoo ผ่านการใช้งาน Container ของ Docker เป้าหมายคือ มี Database PostgreSQL 9.4 ติดตั้งไว้ 1 Container ที่เหลืออีก 5 Container เป็น ตัว Odoo ที่สร้างขึ้นมาเพื่อแยกให้ใช้ของแต่ละหน่วยงานย่อย และเก็บอยู่คนละ database ใครที่มี usecase การใช้งานคล้ายๆกับของผม หวังว่าน่าจะได้ไอเดียเอาไปใช้ประโยชน์ในหน่วยงานได้ครับ
พื้นฐาน Odoo
Odoo จัดเป็น Sofware ระบบงานด้าน ERP ที่มีทั้งแบบ Enterprise Version (เสียตังค์) และ Community Edition (ใช้ฟรี) และถูกนำมาใช้เป็นระบบ ERP ในบริษัทขนาดเล็กถึงขนาดกลางจำนวนมาก ด้วยเหตุที่มันมีโมดูล (App) ด้านบัญชีครบทั้งหมด รวมถึงระบบงานที่ใช้ในการบริหารองค์กรอย่างมีประสิทธิภาพ อีกทั้ง Code ที่ใช้ในการพัฒนาเป็น Python และ database ที่เป็น open source อย่าง PostgreSQL ทำให้ Odoo เป็นตัวเลือกที่จัดว่าน่าสนใจที่สุด ในการนำมาใช้เป็นระบบงานพื้นฐานในองค์กร โดยที่ยังสามารถพัฒนาต่อขยายได้อีกไกล
ในบทความนี้จะนำเสนอวิธีการติดตั้ง Odoo ฝ่าน Docker และเปิดใช้งาน 2 App ที่ผมคิดว่าทุกหน่วยงานน่าจะต้องการใช้งานคือ Project ที่ใช้ในการบริหารโครงการ และ Website Builder ที่ใช้ในการสร้างเว็ปของหน่วยงานแบบสวยๆได้ภายใน 2-3 นาที
วิดีโอแนะนำ Odoo 11 ตัวล่าสุด
ทำไมต้อง Docker Container
ก่อนจะพูดถึงเรื่อง Docker ต้องดูก่อนว่าเรามีตัวเลือกอะไรบ้างสำหรับการติดตั้งระบบงานสำหรับใช้ภายในหน่วยงาน
- การใช้เครื่อง Server จริงๆ โดย Spec ขั้นต่ำที่ต้องใช้คือ CPU 2 core, RAM 4 GB , HDD 256 GB ซึ่งต้นทุนน่าจะประมาณ 2-3 หมื่นบาท ในขณะที่ใช้ได้แค่หน่วยงานเดียว ข้อเสียคือต้องดูแลเครื่องให้ใช้งานได้ตลอดเวลา แสดงในรูป (a)
- ใช้การสร้าง VM โดยอาจใช้ Spec เดียวกับของข้อ 1 ข้อดีคือ ดูแลง่ายโดยการติดตั้งจะลงทั้ง database และ odoo server ไว้ใน VM เดียวเลย แสดงในรูป (b)
- ใช้ Docker Container บน VM ตัวเดียว ซึ่งติดตั้งง่ายกว่า แยกส่วนของ database server และ odoo server ทำให้ง่ายในการบริหารจัดการ โดยให้ odoo server container แต่ละตัวต่อ database คนละก้อนกัน ทำให้ถึงแม้ตัว Server พังไป ตอนเอากลับขึ้นมาใหม่ยังคงสามารถใช้ข้อมูลเดิมได้อยู่เพราะแยกกันเก็บตั้งแต่แรก แสดงในรูป (c)
ตอนี้เรากำลังจะทำตามโมเดลในรูป (c) คือใช้ Docker Container สำหรับให้บริการทั้ง 5 หน่วยงาน (Department) เนื่องจากจำนวนผู้ใช้ในแต่ละหน่วยงานถูกประมาณการไว้แล้วว่าไม่เกิน 5-30 คน ปริมาณการใช้งานและความถึ่ในการใช้ค่อนข้างต่ำ แต่ก็ยังอยากแยกไม่ให้ผู้ใช้เกี่ยวข้องกันข้ามหน่วย ทางเลือกที่เราเลือกจึงเป็นคำตอบที่ทัั้ง เบา เร็ว และแรง
เริ่มการติดตั้ง และปรับแต่ง Odoo
จากสภาพแวดล้อม VM ที่ผมขอใช้งานมาได้ spec อยู่ที่ CPU ขนาด 2 Core, RAM 4 GB , Hdd 150 GB ซึ่งสามารถขอขยายได้ภายหลังหากมีความต้องการใช้งานเพิ่มขึ้น ตัวระบบปฏิบัติการที่ใช้คือ CenOS 7 ขั้นตอนต่อไปคือ การติดตั้ง Docker และการเริ่มรัน Container ของ PostgreSQL 9.4 และ Odoo 11 สามารถดูรายลเเอียดได้ในลิงค์นี้ [ Link ]
ติดตั้ง Docker
# sudo yum install docker
ติดตั้ง PostgreSQL Container และ run container โดยตั้งชื่อว่า db และตั้งชื่อผู้ใช้และรหัสผ่านชื่อ odoo
#
docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db postgres:9.4
ติดตั้ง Odoo 11 Container และ run container โดยตั้งชื่อว่า odoo และเชื่อมต่อกับ database ชื่อ db โดย map port forward ที่ 8069 ซึ่งเป็น port มาตรฐานของ odoo
#
docker run -d -p 8069:8069 --name odoo --link db:db -t odoo
จากตัวอย่างคือท่ามาตรฐาน แต่ความต้องการของเราต้องมี odoo ทั้งหมด 5 container เราจะใช้วิธี map port ให้กับแต่ละหน่วยงานไล่ตั้งแต่ dep1 – dep5 เป็น port 9001-9005 เพื่อใช้ port เป็นตัวแยกบริการ ดังนั้นเราสามารถ รันคำสั่ง ใหม่ได้ดังนี้
# docker run -d -p 9001:8069 –name odoo_dep1 –link db:db -t odoo
# docker run -d -p 9002:8069 –name odoo_dep2 –link db:db -t odoo
# docker run -d -p 9003:8069 –name odoo_dep3 –link db:db -t odoo
# docker run -d -p 9004:8069 –name odoo_dep4 –link db:db -t odoo
# docker run -d -p 9005:8069 –name odoo_dep5 –link db:db -t odoo
นั่นหมายความว่าหากต้องการเรียกใช้ odoo ของ dep1 ต้องเข้าผ่าน http://[server ip]:9001/ ของ dep2 ต้องเข้าผ่าน http://[server ip]:9002 นั่นเอง โดยคำสั่งอื่นๆ ที่จะได้ใช้บ่อยๆ คือ
คำสั่งดู container ทั้งหมดทั้งที่รันอยู่ และที่ถูกหยุดไว้
# docker ps -a
คำสั่งที่ใช้สำหรับหยุดการทำงาน container
# docker stop odoo_dep1
คำสั่งที่ใช้สำหรับการลบ container
# docker start odoo_dep1
คำสั่งที่ใช้สำหรับการลบ container (โดยต้องหยุดก่อน)
# docker rm odoo_dep1
คำสั่งที่ใช้ดูทรัพยากรของ container ที่ทำงานอยู่
# docker stats db odoo_dep1 odoo_dep2 odoo_dep3
ตัวอย่างหน้าจอในการใช้งานระบบ
ตัวอย่างที่เอามาให้ดูจะเฉพาะส่วนของ WebSite Builder และ Project Management Module จริงๆยังมี ส่วนอื่นๆ ที่น่านำมาประยุกต์ใช้ในองค์กรอีกเยอะ ทำให้สามารถช่วยลดค่าใช้จ่ายและช่วยให้คนในองค์กรณ์ทำงานได้ง่ายขึ้นอีกด้วย
ส่วนของ Website Builder มี interface แบบลากวาง ทำให้สามารถสร้างเว็ปขององค์กรเสร็จได้ในพริบตา จาก 2 หน้าตัวอย่างด้านล่างผมใช้เวลาทำประมาณ 15 นาที ทั้งหารูปและใส่ content
หน้าหลักของเว็ปไซต์แสดงระบบงานย่อยที่อยู่ในโครงการ Digital University ที่อยู่ระหว่างการดำเนินการ
หน้ารวมระบบบริหารโครงการ ซึ่งเชื่อมโยงกับเว็ปของ container ตัวอื่นๆ สามารถเลือกไอคอนที่ Odoo เตรียมไว้ให้
ตัวอย่างหน้าบริหารโครงการ สามารถเพิ่มขั้นตอนเองได้ (ในที่นี้ผมใช้รูปแบบเป็น Todo, Doing, Done) โดยใช้ Kanban View และ interface ที่สาารถลากแต่ละ Task ไปยังแต่ละขั้นตอนได้เพื่อให้สามารถติดตามงานว่าไปถึงขั้นตอนไหนแล้ว
ตัวอย่างหน้าสรุปปริมาณงาน โดยสามารถแสดงเป็น Chart รูปแบบต่างๆ ผ่านตัวเลือกได้อย่างง่ายดาย ทำให้ผู้บริหารสามารถรับรู้สถานะของแต่ละโครงการได้แค่เพียงคลิ๊กเดียว
ปัญหาที่เจอและวิธีแก้ไข
เมื่อเริ่มเปิดเรียกใช้งานจริงก็เจอกับปัญหาหนึ่งคือ กรณีที่เราสร้างหน้าเว็ปให้กับผู้ใช้ทั่วไปเข้าถึง ในการเรียกครั้งแรกตัว odoo จะส่งไปหน้าเลือกฐานข้อมูลตลอด เนื่องจากตรวจพบว่ามีฐานข้อมูลหลายตัว สามารถแก้ปัญหาได้โดยการเพิ่ม parameter ในการ filter database ในตอนรันดังนี้
# docker run -d -p 9001:8069 –name odoo_dep1 –link db:db -t odoo — –db-filter=odoodb_dep1
หมายเหตุ: กำหนดให้ชื่อ database ใช้ในรูปแบบ odoodb_* ดังนั้นถ้าเป็น dep5 จะใช้ database ชื่อ odoodb_dep5 นั่นเอง
อีกปัญหาที่จะเจอคือการปรับแต่งตัว firewall ของ OS ผ่านคำสั่ง firewall-cmd และ iptables ตรงนี้สามารถค้นหาใน google ได้ไม่ยาก
บทสรุปการใช้งาน
หลังจากทดลองใช้มาซักระยะ พบว่าการใช้งานในรูปแบบของ Container สามารถช่วยลดความสิ้นเปลืองในการใช้ทรัพยากรได้เป็นอย่างดี โดยที่ยังคงรักษาระดับความพึงพอใจของผู้ใช้ได้ เหมาะสำหรับองค์กรที่มีความต้องการในการใช้งานระบบบริหารจัการของหน่วยงานย่อยที่มีปริมาณผู้ใช้และปริมาณความถึ่ในการใช้งานไม่มาก แต่หากมีความต้องการเพิ่มขึ้นเราก็สามารถเพิ่มทรัพยากรเพื่อการขยายระบบเข้าไปได้โดยง่าย หน่วยงานไหนสนใจนำระบบไปใช้งานสามารถติดต่อเข้ามาได้ครับ ยินดีให้คำปรึกษา
ขอบคุณเจ้าของบทความ : http://ajbee.me/2017/12/31/odoo_with_docker/
ทิ้งคำตอบไว้
คุณต้องเข้าสู่ระบบ เพื่อจะพิมพ์ความเห็น