Ref: by Gemini
- สั่ง build image ใหม่พร้อมรัน container แบบ daemon
docker compose up -d --build
- (หากใช้ Docker Compose เวอร์ชันเก่า ให้ใช้คำสั่ง
docker-compose up -d --build) - หรือ สั่ง recreate container ใหม่โดย ไม่ต้องสั่ง docker compose down ก่อนก็ได้
docker compose up -d --force-recreate
รายละเอียดของ Flag ในคำสั่ง:
--build: บังคับให้ Docker ทำการ rebuild image ใหม่ เพื่อให้โค้ด Node.js ล่าสุดถูกอัปเดตเข้าไปใน container-d(Detached mode): รันคอนเทนเนอร์ไว้เบื้องหลัง (Background) เพื่อให้เทอร์มินัลพร้อมใช้งานต่อ
ขั้นตอนการรีสตาร์ทแบบหมดจด (Clean Recreate)
หากต้องการหยุดคอนเทนเนอร์เดิมก่อน เพื่อให้แน่ใจว่าค่า Environment Variables ใน .env ถูกโหลดใหม่และคอนเทนเนอร์เดิมถูกลบออก ให้ทำตามลำดับนี้:
หยุดและลบคอนเทนเนอร์เดิม:
docker compose downสั่ง Build และเริ่มทำงานใหม่:
docker compose up -d --buildตรวจสอบ Log การทำงาน:
docker compose logs -f <ชื่อ_service># หรือดู log ทั้งหมด docker compose logs -f
ข้อสังเกตเพิ่มเติม:
หากไฟล์
.envถูกเรียกผ่านenv_file:ในdocker-compose.ymlค่าใหม่จะถูกโหลดเข้าคอนเทนเนอร์ทันทีที่คอนเทนเนอร์ถูก recreate ขึ้นมาใหม่หากมีการใช้ Volume mount สำหรับโฟลเดอร์โค้ด (เช่น
./:/app) การเปลี่ยนแปลงโค้ดจะเห็นผลทันที แต่หากไม่ได้ทำ Volume ไว้ จำเป็นต้องใส่--buildเสมอ
เพิ่มเติม
- เข้าไปใน container
docker exec -it <container_name | id> <sh | bash>
- ตัวอย่าง node:22-alpine ด้วยคำสั่ง
docker exec -it mynode sh