Volumes

Keep uploaded files when a container is deleted, by binding a folder of the host as a volume.

episode
ตอนที่ 8 จาก 17
read
อ่าน 1 นาที

Problem

จากการทำ Backend ด้วย Hono มาก่อนหน้านี้

ถ้าหากใครลบ container ทิ้งไป แล้ว start กลับมาอีกรอบ จะเจอว่า ของที่เรา upload ขึ้นไปมันหายไปแล้ว

นั่นเป็นเพราะว่า ของที่เรา uploaded ขึ้นไปนั้นมันอยู่แค่ภายใน container อย่างเดียว พอเราลบ container นั้นทิ้ง ก็เหมือนเราลบทุกอย่างไปหมดเลย รวมถึง file ที่เรา uploaded ไปแล้วด้วย

Docker volumes

เราจะใช้ docker volumes ในการแก้ปัญหานี้

เมื่อเราลบ container ทิ้งไป แต่ folder บนเครื่อง host จะยังอยู่

volume4 image

พอเรา start container กลับมาอีกครั้งหนึ่ง เราก็ทำการ binding folder ใน container เข้ากับ folder บน host อีกครั้งหนึ่ง

binding volume

docker run --name hono -p 3333:3333 -v ./uploads:/app/uploads -d hono

ทีนี้ลอง upload file เข้ามา

volume6 image

แล้วลองดู folder /uploads ก็จะเห็นว่ามี file เพิ่มเข้ามาแล้ว

.
├── compose.yaml
├── dist
│ └── index.js
├── Dockerfile
├── flake.lock
├── flake.nix
├── global.d.ts
├── package.json
├── pnpm-lock.yaml
├── README.md
├── src
│ └── index.ts
├── tsconfig.json
└── uploads
└── README.md