ERPNext Development Environment with frappe_docker

วิธีการเซตอัพ ERPNext สำหรับการพัฒนาด้วย frappe_docker + VS Code

 · 2 min read

การติดตั้งนี้อ้างอิงจากเอกสาร Docker Official ของ ERPNext, https://github.com/frappe/frappe_docker โดยจะเน้นไปที่บทที่เกี่ยวข้องกับ Development, https://github.com/frappe/frappe_docker/tree/main/development


Initial Requirement



  1. VS Code Installed
  2. Docker Installed


Installation Steps


1) Prepare docker bootstrap files สำหรับ VS Code


> cd /path/to/your/working/folder
> git clone https://github.com/frappe/frappe_docker.git
> cd frappe_docker
> cp -R devcontainer-example .devcontainer
> cp -R development/vscode-example development/.vscode


ตอนนี้ VS Code ควรจะแนะนำให้ติดต้ง Remote Container for VS Code แต่หาตต้องการติดตั้งเอง สามารถทำได้เช่นกัน


  1. ด้วย command line > code --install-extension ms-vscode-remote.remote-containers
  2. โดยการหาและคิดตั้งเองใน Vistual Studio Marketplace: Remote - Containers


2) เปิด VS Code และเข้าสู่โหมด Remote Container


  1. เปิดโฟลเดอร์ frappe_docker ใน VS Code ผ่าน command line > code .
  2. ที่ VS Code กดุป่ม (Ctrl + Shift + P) และรัน Execute Remote Containers : Reopen in Container
  3. VS Code จะรัน container ให้
  4. เปิดเข้าไปดูไฟล์ผ่าน container
  5. เปิด terminal จะเห็นว่าเราอยู่ใน container แล้ว



ถึงตอนนี้ใน container ยังไม่มีโค้ด ERPNext แต่มี โปรแกรม bench ซึ่งเป็น library ตั้งต้นของ Frappe เองเพื่อให้ใช้การติดตั้ง Frappe Framework + ERPNext


3) ติดตั้ง Frappe Bench


> bench init --skip-redis-config-generation --frappe-branch version-13 frappe-bench
> cd frappe-bench


เนื่องจากเราใช้ docker ให้ทำการปรับค่าในไฟล์ common_site_config.json


> bench set-mariadb-host mariadb
> bench set-redis-cache-host redis-cache:6379
> bench set-redis-queue-host redis-queue:6379
> bench set-redis-socketio-host redis-socketio:6379


bench คือจุดเริ่มต้น หลังจากที่มี bench แล้ว ในขั้นตอนถัดไปเราจึงจะสามารถสร้าง Site ได้ โดยแต่ละ Site = 1 Database


Error Notice: ในขณะที่เขียนนี้ คำสั่ง set-mariadb-host ดูเหมือนจะมี bug อยู่ วิธีแก้คือเพิ่มค่า "db_host": "mariadb" เข้าไปที่ไฟล์ common_site_config.json โดยตรง


4) สร้าง Site ใหม่บน Bench


โดย default, password สำหรับ database = 123 กรณีนี้สมมุติเราต้องการสร้าง site ชื่อ mysite.localhost ให้พิมพ์ว่า


> bench new-site mysite.localhost --no-mariadb-socket


ระบบจะถามหา password ของ database และให้เราตั้งค่า password สำหรับ Administrator เช่น admin


หรือเราอาจใส่ password ไว้ในคำสั่งเลยก็ได้โดยพิมพ์คำสั่งว่า


> bench new-site mysite.localhost --mariadb-root-password 123 --admin-password admin --no-mariadb-socket


ตั้งค่า site นี้ให้สำหรับ Development ที่ site_config.json หรือพิมพ์คำสั่ง


> bench --site mysite.localhost set-config developer_mode 1
> bench --site mysite.localhost clear-cache


ค่านี้สำหรับ mysite.localhost โดยสามารถดูได้ที่ไฟล์ sites/mysite.localhost/site_config.json


{
"db_name": "_d0df74da3029ce9d",
"db_password": "3P5ctaAdBaHSSyXZ",
"db_type": "mariadb",
"developer_mode": 1
}


จะเห็นได้ว่า Bench ได้ทำการสร้าง database ใหม่ให้โดยอัตโนมัติ เพราะ 1 site = 1 database เสมอ


Note: จนถึงขึ้นตอนนี้ เราได้ติดตั้ง Frappe Framework เป็นทีเรียบร้อย ถ้าไม่ต้องการ ERPNext เราสามารถ login ใช้งานระบบได้แล้ว การติดตั้ง App ต่างๆสามารถทำในภายหลังได้


5) ดาวน์โหลด app ที่ต้องการ เช่น ERPNext version 13


> bench get-app --branch version-13 erpnext https://github.com/frappe/erpnext.git


App ที่ดาวน์โหลดมาจะเก็บไว้ที่โฟลเดอร์ apps ในระดับเดียวกับ sites โดยที่ apps เหล่านี้จะถูกใช้ร่วมกันในทุกๆ site ที่เราสร้างขึ้น


6) ติดตั้ง Apps ที่ต้องการล

> XX

> YYY

งบน Site ที่ได้สร้างขึ้น


> bench --site mysite.localhost install-app erpnext


7) Start ERPNext แล้วเริ่มใช้งาน ที่ http://mysite.localhost:8000


> bench start



สามารถ login ไปด้วย user / pass = Administrator / admin


หลังจากนั้น หากมีการอัพเดท App เช่น erpnext เกิดขึ้น และเราต้องการโค้ดล่าสุดมาใช้งาน เนื่องจากทุกการ get-app ก็คือ git clone แบบหนึ่ง เราสามารถรันคำสั่ง get-app อีกครั้ง ระบบจะถามว่าจะให้ replace ของเดิมหรือไม่ ให้ตอบ Yes เมื่อได้โค้ดชุดล่าสุดแล้วให้พิมพ์คำสั่ง

> bench migrate


End.


No comments yet.

Add a comment
Ctrl+Enter to add comment