Docker Compose สำหรับการพัฒนาในเครื่อง
เชื่อมบริการ Go กับ PostgreSQL และ Redis
Docker Compose สำหรับการพัฒนาในเครื่อง เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงใช้ Docker Compose
Docker Compose จัดการคอนเทนเนอร์หลายรายการ เช่น แอปพลิเคชัน ฐานข้อมูล แคช และตัวรับส่งข้อความ สำหรับการพัฒนาในเครื่อง โดยจำลองสภาพแวดล้อมที่ใกล้เคียงกับสภาพแวดล้อมจริงโดยไม่ต้องตั้งค่าบริการแต่ละรายการด้วยตนเอง
โครงสร้าง docker-compose.yml
กำหนดบริการ เครือข่าย และโวลุมไว้ในไฟล์ YAML:
services:
app:
build: .
ports: ["8080:8080"]
environment:
- DATABASE_URL=postgres://app:pass@db/mydb
depends_on: [db]
db:
image: postgres:15
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: pass
POSTGRES_DB: mydb
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:การโหลดใหม่ทันทีด้วย Air
ใช้ github.com/air-verse/air เพื่อโหลดโปรแกรมใหม่ทันทีระหว่างการพัฒนา เมานต์ซอร์สโค้ดเข้าไปในคอนเทนเนอร์ แล้วเรียกใช้ air แทนไบนารี:
app:
volumes:
- .:/app
command: airการตรวจสอบสถานะ
กำหนดการตรวจสอบสถานะ เพื่อให้ depends_on รอจนกว่า DB จะพร้อมใช้งานจริง ไม่ใช่เพียงเริ่มทำงานแล้ว:
db:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U app"]
interval: 5s
timeout: 3s
retries: 5
app:
depends_on:
db:
condition: service_healthyการแทนที่สำหรับสภาพแวดล้อม
ใช้ docker-compose.override.yml ซึ่งจะถูกรวมโดยอัตโนมัติ สำหรับการตั้งค่าที่ใช้เฉพาะในเครื่อง โดยรักษาไฟล์พื้นฐานให้สะอาดสำหรับ CI:
# docker-compose.override.yml
services:
app:
volumes: [".:/app"] # source mount for live reloadเครือข่ายที่มีชื่อ
วางบริการไว้บนเครือข่ายแบบกำหนดเองร่วมกัน เพื่อให้ค้นหาบริการด้วย DNS โดยใช้ชื่อบริการ:
networks:
backend:
driver: bridge
services:
app:
networks: [backend]
db:
networks: [backend]ไฟล์สภาพแวดล้อม
ใช้คีย์ env_file เพื่อโหลดไฟล์ .env เข้าไปในคอนเทนเนอร์ และเก็บข้อมูลลับไม่ให้ปรากฏใน YAML:
app:
env_file: .env.localการเรียกใช้คำสั่ง
คำสั่ง Compose ที่ใช้บ่อย:
docker compose up -d # start in background
docker compose down -v # stop and remove volumes
docker compose logs -f app # stream app logs
docker compose exec db psql -U app mydb # run in containerการเติมข้อมูลเริ่มต้นลงฐานข้อมูล
เมานต์ไฟล์ SQL สำหรับเติมข้อมูลเริ่มต้นเข้าไปในไดเรกทอรี /docker-entrypoint-initdb.d ของอิมเมจ postgres ไฟล์เหล่านี้จะทำงานเมื่อสร้างคอนเทนเนอร์เป็นครั้งแรก:
db:
volumes:
- ./migrations:/docker-entrypoint-initdb.dโพรไฟล์
ใช้โพรไฟล์ของ Compose เพื่อเริ่มบริการเสริม เช่น ชุดเครื่องมือตรวจสอบสถานะ เฉพาะเมื่อจำเป็น:
services:
grafana:
profiles: ["monitoring"]Compose ใน CI
เรียกใช้การทดสอบการทำงานร่วมกับบริการจริงใน CI ด้วย Compose GitHub Actions รองรับ Docker Compose โดยตรง ให้ใช้การตรวจสอบสถานะเพื่อรอจนกว่าบริการจะพร้อมใช้งาน
ตรวจสอบความเข้าใจ
คุณจะทำให้คอนเทนเนอร์ของแอปพลิเคชันรอจนกว่าฐานข้อมูลจะพร้อมใช้งานใน Docker Compose ได้อย่างไร
สรุป: Docker Compose
ประเด็นสำคัญ:
- docker-compose.yml ใช้กำหนดบริการ เครือข่าย และโวลุมทั้งหมด
- ใช้ depends_on ร่วมกับ healthcheck เพื่อให้บริการพร้อมใช้งาน
- ใช้ไฟล์แทนที่สำหรับการตั้งค่าในการพัฒนาในเครื่อง และใช้ env_file สำหรับข้อมูลลับ
- ใช้ Air เพื่อโหลดใหม่ทันที และเมานต์ซอร์สโค้ดเป็นโวลุม
คำถามที่พบบ่อย
บทเรียน “Docker Compose สำหรับการพัฒนาในเครื่อง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Docker Compose สำหรับการพัฒนาในเครื่อง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Docker Compose สำหรับการพัฒนาในเครื่อง”
เชื่อมบริการ Go กับ PostgreSQL และ Redis คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “Docker Compose สำหรับการพัฒนาในเครื่อง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้าง Docker หลายขั้นตอนสำหรับ Go
- การกำหนดค่าสภาพแวดล้อมและข้อมูลลับ
- Docker Compose สำหรับการพัฒนาในเครื่อง
- การตรวจสอบสถานะและการปรับแต่งสำหรับการใช้งานจริง