Monday, October 19, 2026

Recreate docker container กรณีแก้ไขไฟล์ ระบบ หรือไฟล์ env เพื่อโหลดใช้ค่าใหม่แบบ clean

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 ถูกโหลดใหม่และคอนเทนเนอร์เดิมถูกลบออก ให้ทำตามลำดับนี้:

  1. หยุดและลบคอนเทนเนอร์เดิม:

    docker compose down
  2. สั่ง Build และเริ่มทำงานใหม่:

    docker compose up -d --build
  3. ตรวจสอบ 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

Popular Posts