ทำไมต้องใช้ Makefile?

Sept. 15, 2024 · boychawin

วันนี้เดียวพามารู้จักกับเจ้า 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 ใหม่ทั้งหมด

การใช้งาน

  1. สร้างไฟล์ Makefile: สร้างไฟล์ชื่อ Makefile ใน directory เดียวกับไฟล์ docker-compose.yml
  2. เรียกใช้คำสั่ง:
    • make up: เริ่มต้น container ทั้งหมด
    • make down: หยุดและลบ container ทั้งหมด
    • make build: สร้าง image ใหม่

ประโยชน์เพิ่มเติมของ Makefile

  • สามารถกำหนดค่าตัวแปรต่างๆ เช่น ชื่อ image, version, หรือพอร์ตที่ใช้
  • สามารถเรียกใช้คำสั่งอื่นๆ เช่น การรัน test, การสร้าง document หรือการ deploy
  • สามารถใช้ตัวแปรสภาพแวดล้อม (Environment Variables)ในการกำหนดค่าต่างๆ

สรุป

การใช้ Makefile กับ Docker Compose ช่วยให้การทำงานกับ Docker Compose ง่ายขึ้น สะดวกขึ้น และมีประสิทธิภาพมากขึ้น โดยเฉพาะอย่างยิ่งสำหรับโครงการที่มีขนาดใหญ่และซับซ้อน