สวัสดีครับ เมื่อเรา Map volume ของ Folder บน Local เข้ากับ Folder บน Container แล้ว สิ่งที่เกิดขึ้นคือ Folder บน Container จะถูกแทนที่ด้วย Folder บน Local บางครั้งเราอยากจะยกเว้น บาง Sub folder บน Container ไม่ต้องการให้ถูกเขียนทับด้วย Sub folder ของ Local เพื่อให้เข้าใจมากขึ้น มาดูกรณีศึกษานี้กันครับ
ถ้าเราต้องการทํา Api Hello world ด้วย nodejs เราจะ Build docker image ขึ้นมาใหม่โดย Image นี้จะต้อง Install dependencies ที่ต้องใช้ไว้หมดแล้ว นั่นหมายความว่า Image นี้มี Folder node_modules เกิดขึ้นมาแล้ว เมื่อถึงเวลาที่เราใช้งาน Image นี้ เราจะ Map volume เข้าไป ซึ่งถ้าเรา Map volume เข้าไปแบบตรงๆ folder node_modules จะถูกเขียนทับ ดังนั้นเราจึงต้องยกเว้น Folder node_modules มีวิธีการทําคือ ให้เราเพิ่ม Map volume แบบนนี้เข้าไปในคําสั่ง Run ครับ
docker run -d --rm -it --name test -v $(pwd):/app/ -v /app/node_modules -p 3000:3000 node-hello
ให้สังเกตตรง -v /app/node_modules ตรงนี้แหละครับ ที่จะบอก Docker เราไม่ต้องการ Map folder นี้นะ Docker จะไม่ Map volume นี้ให้ แต่!!! จะสร้าง Folder ว่างๆ ไว้ให้ทั้งบน Local และ บน Container ในกรณีที่ไม่มี Folder นี้อยู่ ซึ่งสอง Folder นี้จะไม่เกี่ยวข้องกัน สําหรับคําสั่งใน Docker compose เขียนได้ดังนี้
volumes:
- .:/app
- /app/node_modules
Source code ตัวอย่าง github.com/mrthiti/docker-volume-example
htop คืออะไรhtop คือ โปรแกรมตัวนึงที่ใช้สําหรับดู process ที่กําลังทํางานอยู่ในขณะนี้มี pid, user ฯลฯ สามารถแสดงผลว่า CPU ใช้ไปเท่าไร Memory ใช้ไปเท่าไร ในรูปแบบที่ดูง่ายตามรูปด้านล่าง
ก่อนหน้านี้เราได้เรียนรู้กันไปแล้วว่าใน Template จะจัดการเกี่ยวกับการแสดงผล ซึ่งในบางครั้งเราจําเป็นต้องนํา Logic บางอย่างใส่เข้าไปใน Template ด้วย ซึ่งเราก็จะใส่ไปแบบนี้
สวัสดีครับ ในบทความก่อนหน้านี้ผมได้อธิบายว่า docker คืออะไร และ วิธีติดตั้ง Docker engine ไปแล้ว ถ้าใครยังไม่ได้อ่านก็กลับไปอ่านก่อนนะครับ ในบทความนี้จะเกี่ยวข้องกับการสร้าง Docker Image ก่อนอื่นมาทําความเข้าใจอีกซักนิดเกี่ยวกับ Docker Image กันก่อน