DEV Community

Pallat Anchaleechamaikorn
Pallat Anchaleechamaikorn

Posted on

ส่อง Dockerfile for Go

พอดีได้เห็น tweet หนึ่งมีคนเอา Dockerfile สำหรับ build Go แบบ basic สุดๆมาวาง แล้วให้คนใน twitter ช่วยๆกันทำให้มันดูดีขึ้น จาก tweet นี้ tweet เลยได้เห็นการใช้ tini แล้วก็สงสัยว่า ทำไมเราถึงจำเป็นต้องใช้มันด้วยนะ

พอได้ลองไปอ่านๆดูก็พบว่า มันดูมีอะไรพอสมควร เพราะตั้งแต่ docker version 1.13 เป็นต้นมา เวลาที่เราสั่งคำสั่ง docker run เราสามารถเพิ่ม flag --init เข้าไป เพื่อสั่งให้มันใช้เจ้า tini นี้ด้วยได้

แต่เข้าใจว่า ถ้าเราจะเขียน Dockerfile เราอาจจะยังต้องตั้งใจเขียนมันขึ้นมาเพื่อให้มันใช้ tini อยู่ดีครับ

ทีนี้ tini มันมีประโยชน์อย่างไร เขาอธิบายว่า ปกติแล้ว เมื่อเรากำหนดคำสั่ง ENDPOINT เข้าไปใน Dockerfile มันจะถูกกำหนดค่า PID ให้เป็นเลข 1 ซึ่งเราอาจจะไม่รู้ว่า ที่จริงแล้ว ความรับผิดชอบของ PID เลข 1 นั้น มันมีความหมายอื่น นั่นก็คือ มันมีหน้าที่ที่จะต้องคอยเก็บพวก Zombie process และสิ่งนี้ tini จะเข้ามาช่วยจัดการให้ และยังรับประกันว่า พวก signal ต่่างๆที่ถูกส่งเข้ามา จะยังถูก forward มาให้เราได้เหมือนเดิม

ส่วนรายละเอียดเกี่ยวกับ Zombie process และ tini ผมแนะนำให้ลองเข้าไปอ่านในหน้า github ของ tini เอง ก็จะมีข้อมูลที่มากกว่านี้ให้อ่านนะครับ

Latest comments (0)