วันนี้เดียวพามารู้จักกับเจ้า Makefile กันครับ ว่าทำไมต้องใช้ Makefile ในการพัฒนา โดยผมจะมีตัวอย่างที่ใช้งานกับ Docker Compose
Makefile คือไฟล์ที่ใช้กำหนดชุดคำสั่งหรือขั้นตอนต่างๆ ในการพัฒนาซอฟต์แวร์ โดยเฉพาะอย่างยิ่งในการคอมไพล์โปรแกรมขนาดใหญ่ที่ประกอบด้วยหลายไฟล์ เมื่อเราต้องการสร้างโปรแกรมขึ้นมา เราสามารถเขียนชุดคำสั่งลงใน Makefile ได้ แล้วเรียกใช้คำสั่ง make
เพื่อให้ระบบดำเนินการตามคำสั่งที่กำหนดไว้ใน Makefile อัตโนมัติ
ตัวอย่าง Makefile สำหรับ Docker Compose
# คำสั่งพื้นฐานสำหรับ Docker Compose
COMPOSE_FILE = docker-compose.yml
# สร้างและเริ่มต้น container ทั้งหมด
up:
docker-compose -f $(COMPOSE_FILE) up -d
# หยุดและลบ container ทั้งหมด
down:
docker-compose -f $(COMPOSE_FILE) down
# สร้าง image ใหม่ทั้งหมด
build:
docker-compose -f $(COMPOSE_FILE) build
คำอธิบาย
- COMPOSE_FILE: กำหนดชื่อไฟล์ docker-compose.yml ที่จะใช้
- up: สร้างและเริ่มต้น container ทั้งหมดใน background (detached mode)
- down: หยุดและลบ container ทั้งหมด
- build: สร้าง image ใหม่ทั้งหมด
การใช้งาน
- สร้างไฟล์ Makefile: สร้างไฟล์ชื่อ Makefile ใน directory เดียวกับไฟล์ docker-compose.yml
- เรียกใช้คำสั่ง:
- make up: เริ่มต้น container ทั้งหมด
- make down: หยุดและลบ container ทั้งหมด
- make build: สร้าง image ใหม่
ประโยชน์เพิ่มเติมของ Makefile
- สามารถกำหนดค่าตัวแปรต่างๆ เช่น ชื่อ image, version, หรือพอร์ตที่ใช้
- สามารถเรียกใช้คำสั่งอื่นๆ เช่น การรัน test, การสร้าง document หรือการ deploy
- สามารถใช้ตัวแปรสภาพแวดล้อม (Environment Variables)ในการกำหนดค่าต่างๆ
สรุป
การใช้ Makefile กับ Docker Compose ช่วยให้การทำงานกับ Docker Compose ง่ายขึ้น สะดวกขึ้น และมีประสิทธิภาพมากขึ้น โดยเฉพาะอย่างยิ่งสำหรับโครงการที่มีขนาดใหญ่และซับซ้อน