ERPNext Development Environment with frappe_docker
วิธีการเซตอัพ ERPNext สำหรับการพัฒนาด้วย frappe_docker + VS Code
การติดตั้งนี้อ้างอิงจากเอกสาร Docker Official ของ ERPNext, https://github.com/frappe/frappe_docker โดยจะเน้นไปที่บทที่เกี่ยวข้องกับ Development, https://github.com/frappe/frappe_docker/tree/main/development
Initial Requirement
- VS Code Installed
- 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 แต่หาตต้องการติดตั้งเอง สามารถทำได้เช่นกัน
- ด้วย command line > code --install-extension ms-vscode-remote.remote-containers
- โดยการหาและคิดตั้งเองใน Vistual Studio Marketplace: Remote - Containers
2) เปิด VS Code และเข้าสู่โหมด Remote Container
- เปิดโฟลเดอร์ frappe_docker ใน VS Code ผ่าน command line > code .
- ที่ VS Code กดุป่ม (Ctrl + Shift + P) และรัน Execute Remote Containers : Reopen in Container
- VS Code จะรัน container ให้
- เปิดเข้าไปดูไฟล์ผ่าน container
- เปิด 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. Login to start a new discussion Start a new discussion