การเพิ่มและตั้งค่าเว็บไซต์ที่ใช้ Docker Container บน ServBay
ServBay คือสภาพแวดล้อมการพัฒนาเว็บบน macOS ที่ออกแบบมาเป็นพิเศษรองรับได้หลายภาษาและเทคโนโลยี นอกเหนือจากการโฮสต์เว็บไซต์ด้วยซอฟต์แวร์ในตัวของ ServBay เช่น PHP, Node.js, Python, Go, Java, ฐานข้อมูล ฯลฯ แล้ว คุณยังสามารถทำงานกับเว็บไซต์หรือบริการที่รันอยู่ใน Docker Container ได้อีกด้วย วิธีนี้ช่วยเพิ่มความยืดหยุ่น แยกสภาพแวดล้อม และ สร้างความสอดคล้องกันในการพัฒนา เหมาะอย่างยิ่งสำหรับโครงการที่ต้องการสภาพแวดล้อมหรือการติดตั้งพิเศษ
บทความนี้จะแนะนำรายละเอียดขั้นตอนการเพิ่มเว็บไซต์ที่รันด้วย Docker Container ไปยัง ServBay และการตั้งค่า Reverse Proxy เพื่อผสานเข้ากับกระบวนการพัฒนาโลคอลของคุณ
ภาพรวม
ด้วยการตั้งค่า ServBay ให้เป็น Reverse Proxy คุณสามารถกำหนดให้คำขอบางโดเมนถูกส่งต่อไปยังบริการที่รันอยู่ภายใน Docker Container โดย ServBay จะจัดการทราฟิกขาเข้า (เช่น ใบรับรอง HTTPS การ resolve โดเมน ฯลฯ) ส่วน Docker Container จะรับหน้าที่ให้บริการแอปพลิเคชันของคุณโดยตรง กรณีนี้จะช่วยรวมจุดเด่นของการบริหารจัดการใน ServBay เข้ากับความสามารถในการใช้คอนเทนเนอร์ของ Docker ได้อย่างเต็มที่
หัวข้อต่อไปนี้จะชี้นำคุณสู่วิธีการเพิ่มและตั้งค่าเว็บไซต์ที่รันด้วย Docker บน ServBay ทีละขั้น
ข้อควรมีเบื้องต้น
ก่อนเริ่มโปรดตรวจสอบว่าคุณพร้อมดังนี้:
- ติดตั้งและรัน ServBay แล้ว: คุณได้ติดตั้ง ServBay บน macOS และเปิดโปรแกรมเรียบร้อย
- ติดตั้งและรัน Docker แล้ว: คุณได้ติดตั้ง Docker Desktop หรือแอปอื่นๆ บน macOS และ Docker กำลังทำงาน
- เตรียม Docker Image และ Container: คุณมี Image ของเว็บไซต์หรือแอปพลิเคชันที่ต้องการแล้ว และสามารถรัน Container ได้
ขั้นตอนการเพิ่มเว็บไซต์อย่างละเอียด
ขั้นตอนที่ 1: เตรียมและรัน Docker Container
อันดับแรก ให้คุณแน่ใจว่า Docker Container ของคุณรันแล้ว และบริการภายใน (เช่น เว็บเซิร์ฟเวอร์) ได้ตั้งค่าให้ฟังที่พอร์ตใน Container และมีการ map port จาก Host (macOS ของคุณ) ให้เข้าถึงได้
เช่น หากคุณมี Container ที่รัน Nginx โดยฟังที่พอร์ต 80 ภายใน Container ให้ map port 8080 ของเครื่องเข้าไปยังพอร์ต 80 ของ Container ด้วยคำสั่งดังนี้
bash
docker run -d --name my-nginx-servbay -p 8080:80 nginx
1
ในตัวอย่างนี้ Nginx ใน Container ชื่อ my-nginx-servbay
ฟังที่พอร์ต 80
ภายใน แต่ด้วย -p 8080:80
จะ map พอร์ต 80
ของ Container ออกไปยังพอร์ต 8080
ของเครื่องหลัก เพื่อที่ ServBay จะเชื่อมต่อกับ service ผ่านพอร์ต 8080
นี้
ปรับพอร์ตให้ตรงตามความต้องการของแอปคุณ และตรวจสอบว่า service ใน Container ฟังที่พอร์ตถูกต้อง และตั้งค่า port mapping ให้ถูก
ขั้นตอนที่ 2: เปิดหน้าบริหารจัดการ ServBay
ค้นหาไอคอน ServBay
ในโฟลเดอร์แอปพลิเคชัน (Applications) ของ macOS แล้วดับเบิ้ลคลิกเพื่อเปิดหน้าบริหารจัดการ
ขั้นตอนที่ 3: ไปยังหน้าจัดการเว็บไซต์
เมื่อเปิด ServBay คุณจะเห็นหน้าหลักทางซ้ายมือ เลือกเมนู เว็บไซต์
ซึ่งจะนำคุณไปสู่หน้าบริหารจัดการเว็บไซต์ทั้งหมดที่ได้เพิ่มไว้
ภาพประกอบ: คลิกที่ “เว็บไซต์” ในแถบข้างซ้ายเพื่อเข้าสู่หน้าเว็บที่ตั้งค่าไว้
ขั้นตอนที่ 4: เพิ่มเว็บไซต์ใหม่
ที่ด้านล่างของหน้าเว็บไซต์ จะเห็นปุ่ม +
ให้คลิกเพื่อเปิดฟอร์มเพิ่มเว็บไซต์ใหม่ทางด้านขวา ใส่ข้อมูลต่างๆ สำหรับเว็บไซต์
ภาพประกอบ: คลิกปุ่ม “+” ด้านล่างเพื่อเพิ่มเว็บไซต์ใหม่
ขั้นตอนที่ 5: ตั้งค่าข้อมูลเว็บไซต์
ในฟอร์มที่เปิดขึ้นมา ให้กรอกข้อมูลสำคัญดังนี้:
- ชื่อ (Name): ตั้งชื่อให้เว็บไซต์เพื่อให้เรียกดูง่าย เช่น
Docker Nginx Demo
(ใช้เพื่อจัดการภายใน ServBay เท่านั้น) - โดเมน (Domain): ระบุโดเมนโลคอลที่ใช้เข้าถึง Container นี้ในเบราว์เซอร์ แนะนำลงท้ายด้วย
.servbay.demo
เพื่อเลี่ยงชนกับโดเมนจริง เช่นdocker.servbay.demo
ServBay จะจัดการ hosts file ให้อัตโนมัติโดยชี้มายัง127.0.0.1
- โปรโตคอล (Protocol): เลือกโปรโตคอลที่เว็บไซต์รองรับโดยปกติปล่อยเป็น
HTTP/HTTPS
ServBay จะดูแลทั้ง HTTP (80) และ HTTPS (443) ให้ - วิธีขอใบรับรอง SSL (SSL Certificate Request Method): แนะนำให้เลือก
ServBay CA
โดย ServBay จะสร้างและบริหาร SSL Cert ที่ signed โดย ServBay User CA ให้อัตโนมัติ หากคุณติดตั้ง Public CA ของ ServBay ใน keychain ระบบ/เบราว์เซอร์จะเชื่อถือ cert นี้ทันที สะดวกมากกับงาน dev หรือทดสอบ HTTPS โลคอล (หากมีความต้องการพิเศษ สามารถเลือกACME
เช่น สำหรับ Let's Encrypt หรือCustom
ใช้ใบรับรองของตนเอง) - ประเภทเว็บไซต์ (Website Type): [สำคัญ] เลือก
Reverse Proxy (ย้อนเส้นทาง)
เพื่อให้ ServBay ทำหน้าที่รับ traffic และส่งต่อไปยัง service ด้านหลังที่คุณระบุ - ที่อยู่ IP (IP Address): ระบุ IP ของบริการใน Container ที่ mapped ไปยังเครื่องหลัก โดยทั่วไปสำหรับ Docker โลคอล ใช้
127.0.0.1
- พอร์ต (Port): ระบุพอร์ตของ Container service ที่ mapped มายัง Host ตรงกับที่ตั้งค่าในคำสั่ง
docker run -p <host-port>:<container-port>
เช่น หากใช้-p 8080:80
ให้กรอกเป็น8080
ภาพประกอบ: กรอกข้อมูลตั้งค่า Reverse Proxy สำหรับเว็บไซต์จาก Docker
ขั้นตอนที่ 6: เสร็จสิ้นและบันทึกการตั้งค่า
เมื่อกรอกข้อมูลครบแล้ว คลิกปุ่ม เพิ่ม (Add)
ด้านล่างของฟอร์ม
ServBay จะดำเนินการตั้งค่า rule reverse proxy ให้โดยอัตโนมัติ (ใน Caddy หรือ Nginx) และอัปเดต hosts file ของระบบเพื่อชี้ไปยังโดเมนที่คุณกำหนด
หากสำเร็จ อาจต้องรอให้ ServBay apply การตั้งค่าประเดี๋ยวสั้นๆ แล้วจึงจะสามารถเข้าเว็บไซต์ผ่านชื่อโดเมนที่เพิ่มไว้ได้
ขั้นตอนที่ 7: เข้าใช้งานเว็บไซต์และตัวช่วยด่วน
หลังบันทึกและตั้งค่าสำเร็จ ที่หน้าบริหารจัดการเว็บไซต์จะเห็นรายการเว็บไซต์ใหม่และสถานะควรเป็น “กำลังทำงาน” หรือ “Running”
ตอนนี้สามารถเปิดโดเมน (เช่น http://docker.servbay.demo
หรือ https://docker.servbay.demo
) ในเบราว์เซอร์ หากตั้งค่าถูกต้อง ServBay จะส่งต่อคำขอไปยัง Container ของ Docker และแสดงผลงานของเว็บในเบราว์เซอร์
ที่แต่ละเว็บไซต์จะมีปุ่มช่วยเหลือต่างๆ ประกอบด้วย:
- เปิดโฟลเดอร์รากของเว็บไซต์ใน IDE: (สำหรับ Reverse Proxy ปุ่มนี้อาจใช้ไม่ได้หรือชี้ไปยังโฟลเดอร์ config ของ ServBay แล้วแต่การตั้งค่าและเวอร์ชัน)
- เปิดเว็บไซต์ในเบราว์เซอร์: คลิกเข้าเว็บอย่างรวดเร็วในแท็บใหม่
- ดู log ของเว็บไซต์: ตรวจสอบ access log หรือ error log ของเว็บไซต์นี้โดยตรง (เหมาะกับการ debug)
- ปิด/เปิดเว็บไซต์: ปิดหรือเปิดการทำงานของ Reverse Proxy ชั่วคราวได้
- ลบเว็บไซต์: เอาการตั้งค่านี้ออกจาก ServBay
ภาพประกอบ: เมนูด่วนที่ปรากฏในรายการเว็บไซต์ของ ServBay
ข้อควรระวังและเทคนิคที่แนะนำ
- สถานะของ Docker Container: ตรวจสอบให้ Container ของคุณรันอยู่ตลอด เพราะถ้าหยุด ServBay จะไม่สามารถส่งต่อคำขอไปถึงบริการได้
- Port Mapping: ตรวจสอบคำสั่ง
-p
ของ Docker ที่ใช้ map port ว่าตรงกับที่ใส่ใน ServBay และ port นั้นๆ ไม่มีแอปอื่น on host ใช้อยู่แล้ว - Firewall: ตรวจสอบ firewall ของ macOS ให้เปิด port ที่จำเป็นทั้ง 80, 443 (ServBay) และ port ที่ Docker สั่ง map host ออกมา
- โหมดเครือข่าย Docker: โดยทั่วไปใช้ bridge network และ map port ด้วย
-p
จะง่ายกว่า หากใช้ host network สามารถชี้ port ใน ServBay ให้ตรงกับ port ที่ container ฟัง แต่แบบ host อาจชนกับ port อื่นบนเครื่อง - ติดตั้ง ServBay CA: เพื่อความสะดวกในการทดสอบ HTTPS บนเครื่อง dev แนะนำให้ติดตั้ง Public CA ของ ServBay ไว้ในระบบ จะช่วยให้เบราว์เซอร์เชื่อถือใบรับรอง SSL ที่ ServBay ออกให้ กับโลคอลเว็บของคุณ
คำถามที่พบบ่อยและแนวทางแก้ไข (FAQ)
ถาม: เพิ่มเว็บไซต์แล้วเข้าใช้งานไม่ได้ เบราว์เซอร์ขึ้นว่าเชื่อมต่อไม่สำเร็จหรือหมดเวลา?
ตอบ: ตรวจสอบดังนี้
- สถานะเว็บไซต์ใน ServBay: ที่หน้าบริหารจัดการเว็บไซต์ ตรวจสอบว่ารายการเว็บเป็น “กำลังทำงาน”
- สถานะ Container Docker: รันคำสั่ง
docker ps
ใน terminal แล้วตรวจสอบว่า container เป้าหมายยังทำงานอยู่ - ตรวจสอบ port mapping ใน Docker: ใช้
docker ps
ดูข้อมูล mapping port (PORTS
column) ว่า port ที่ map ใน host (เช่น8080
จาก0.0.0.0:8080->80/tcp
หรือ127.0.0.1:8080->80/tcp
) ตรงกับที่ตั้งไว้ใน ServBay - เช็ค service ภายใน Container: ให้แน่ใจว่าเว็บเซิร์ฟเวอร์ใน container (เช่น Nginx, Apache, Node ฯลฯ) รันและฟังที่ port ถูกต้อง และไม่ error ตรวจสอบ log ด้วยคำสั่ง
docker logs <container-idหรือชื่อ>
- เช็ค log ของ ServBay: กดดู log เว็บไซต์ในหน้ารายการเว็บ อาจมี error เพิ่มเติมหรือสาเหตุ forwarding ไม่สำเร็จ
- เช็ค hosts file ในระบบ: แม้ ServBay ตั้งให้เอง อาจเช็ค
/etc/hosts
ด้วยมือซ้ำอีกครั้งว่าโดเมนชี้ไปที่127.0.0.1
- ตรวจสอบ firewall: เช็คให้แน่ใจว่า firewall ไม่ block port ที่ ServBay หรือ Docker ใช้งานบน host
ถาม: สามารถใช้ ServBay จัดการ Container ของ Docker โดยตรงได้หรือไม่?
ตอบ: ServBay เป็นเครื่องมือหลักในการจัดการเว็บโลคอล ฐานข้อมูล สภาพแวดล้อมภาษาต่างๆ และ reverse proxy ไปยัง backend (รวมถึง Docker) ServBay ยังไม่รองรับการควบคุมวงจรชีวิตของ Docker Container โดยตรง (เช่น start/stop/build image) คุณยังต้องใช้คำสั่ง Docker หรือ Docker Desktop ในการบริหาร Container เอง
ถาม: ServBay CA คืออะไร และจำเป็นต้องติดตั้งหรือไม่?
ตอบ: ServBay CA (Certificate Authority) เป็นระบบจัดการใบรับรอง SSL เฉพาะสำหรับ ServBay เพื่ออำนวยความสะดวกในการ dev HTTPS โลคอล โดย ServBay User CA จะใช้ sign SSL cert สำหรับเว็บที่คุณสร้างไว้ ส่วน ServBay Public CA คือตัว root cert ใหญ่ ถ้าคุณเพิ่ม Public CA ของ ServBay ใน keychain ระบบ/เบราว์เซอร์จะเชื่อถือ cert สำหรับเว็บโลคอลทุกเว็บทันที ไม่มีคำเตือน “ไม่ปลอดภัย” เหมือนเว็บ dev ปกติ สะดวกมากเมื่อต้องทดสอบ HTTPS ในแบบที่คล้าย production environment
สรุป
การเพิ่มเว็บไซต์ที่รันด้วย Docker Container บน ServBay คือวิธีที่มีประสิทธิภาพและยืดหยุ่น คุณสามารถใช้ ServBay บริหาร traffic กับโดเมนได้ศูนย์กลางเหมาะกับการพัฒนา และใช้พลังของ Docker ในการแยกและจัดการสิ่งแวดล้อมของแอปได้อย่างเต็มที่ เพียงตั้งค่าระบบ reverse proxy ง่ายๆ ก็นำโปรเจกต์ที่รันบน Docker หลากหลายแบบ มาเชื่อมกับ workflow บน ServBay ได้ไม่ยาก แค่ปฏิบัติตามขั้นตอนและข้อควรระวังคือคุณจะสามารถ deploy และใช้งานเว็บไซต์ Dockerized ของคุณบนโลคอลได้อย่างราบรื่น