เพิ่ม volume บน fly.io สำหรับ Active Storage

ช่วงนี้มีโอกาสได้ใช้ fly.io ในการ deploy โปรเจ็ค rails ซึ่งค่อนข้างจะสะดวกสบายเลยทีเดียว แต่ก็เจอปัญหาในการเก็บข้อมูลภาพหรือไฟล์จาก Active Storage เพราะทุกครั้งที่รัน deploy ใหม่ โฟลเดอร์ที่ใช้เก็บข้อมูลก็จะสร้างใหม่ขึ้่นทุกครั้ง จริงๆ ก็เป็นปัญหาทั่วไปของการใช้งาน Docker นั้นแหละ ซึ่งในเคสนี้เราก็ต้องทำการสร้าง volume แยกเก็บข้อมูลเอาไว้ และ mount เข้าไปใน container ที่ใช้งาน

ก่อนอื่นเราต้องสร้าง volume ขึ้นมาก่อน

$ fly volumes create myapp_storage

จากนั้นก็ทำการ mount เข้ากับ app ของเราโดยเข้าไปกำหนดค่าในไฟล์ fly.toml ดังตัวอย่างด้านล่าง

[mounts]
processes = ['web'] # specific process to mount volume
source="myapp_storage"
destination="/storage"

กรณีที่เรารันโปรแกรมหลายโปรเซส แนะนำให้กำหนด processes ที่จะ mount ให้ชัดเจน ไม่งั้นจะเกิด error ได้

สำหรับการใช้งาน volume บน fly.io แบบละเอียดสามารถถตามลิงค์ https://fly.io/docs/reference/volumes ไปดูได้เลยนะ