ในโครงสร้างสถาปัตยกรรมแบบแยกส่วน (Decoupled Services) ที่เราแชร์ฐานข้อมูลหรือเครือข่ายร่วมกันระหว่างโปรเจกต์ต่าง ๆ บนเครื่อง การสร้าง Docker Network ภายนอก (External Network) ถือเป็นแนวทางปฏิบัติที่ดี ช่วยให้คอนเทนเนอร์ของ WordPress สามารถมองเห็นและติดต่อกับคอนเทนเนอร์ฐานข้อมูลกลาง (เช่น MariaDB) ที่อยู่นอกโฟลเดอร์โปรเจกต์ได้โดยตรง
บทความนี้จะแนะนำวิธีสร้างและจัดการไฟล์ตั้งค่าเครือข่าย magi ณ ตำแหน่ง /Users/common/Docker/network-magi/docker-compose.yml ครับ
1. โครงสร้างและตำแหน่งไฟล์
สร้างโฟลเดอร์กลางสำหรับเก็บคอนฟิกเครือข่ายและบริการส่วนกลาง (ถ้ามี) ไว้ที่พาธ
/Users/common/Docker/network-magi
└── docker-compose.yml
2. ตัวอย่างโค้ดไฟล์ docker-compose.yml สำหรับสร้างเครือข่าย magi
เปิดไฟล์ /Users/common/Docker/magi/docker-compose.yml (หากยังไม่มีให้สร้างขึ้นมาใหม่) แล้วใส่คอนฟิกสำหรับประกาศใช้งาน External Network ดังนี้ครับ
# docker-compose.yml (ฝั่ง PHP App + Debugger)
networks:
magi:
name: magi
external: true # สร้างไว้ก่อนด้วย: docker network create magi
services:
php-app:
build:
context: .
dockerfile: Dockerfile.dev
container_name: php_dev_app
restart: unless-stopped
volumes:
- .:/var/www/html:cached
environment:
- XDEBUG_MODE=develop,debug,coverage
- XDEBUG_CONFIG=client_host=host.docker.internal client_port=9003
- MAIL_HOST=mailpit # เรียกหา mailpit บนเครือข่าย magi ได้โดยตรง
- MAIL_PORT=1025
extra_hosts:
- "host.docker.internal:host-gateway"
networks:
- magi
ports:
- "8000:80"
ข้อสังเกต
- ในโฟลเดอร์ส่วนกลางของ
magiเราจะตั้งค่าexternal: false(หรือละไว้) เพื่อให้คำสั่งdocker compose upเป็นตัวสร้างเครือข่ายmagiขึ้นมาจริง ๆ - ส่วนในไฟล์
docker-compose.ymlของโปรเจกต์ย่อย (เช่น WordPress) เราจะตั้งค่าเป็นexternal: trueเพื่อบอกว่า “ให้ไปเกาะใช้งานเครือข่ายmagiที่มีคนสร้างรอไว้แล้ว”
3. คำสั่งในการสร้างและเปิดใช้งานเครือข่าย
เมื่อเตรียมไฟล์ docker-compose.yml ที่ /Users/common/Docker/magi/ เรียบร้อยแล้ว ให้รันคำสั่งเหล่านี้ใน Terminal:
- เปลี่ยนเส้นทางไปยังโฟลเดอร์กลาง
cd /Users/common/Docker/network-magi/ - สั่งสร้างและรันเครือข่าย (รวมถึงบริการฐานข้อมูลกลางถ้ามี)
docker compose up -d - ตรวจสอบว่าเครือข่าย
magiถูกสร้างขึ้นมาสำเร็จหรือไม่docker network ls
คุณจะเห็นชื่อmagiปรากฏขึ้นมาในรายการ ซึ่งพร้อมให้โปรเจกต์ WordPress หรือเว็บอื่น ๆ ดึงไปใช้งานต่อได้ทันทีครับ