สำหรับใครที่กำลังเริ่มต้นใช้ Docker เพื่อจัดการฐานข้อมูล MongoDB แต่ยังไม่รู้จะเริ่มต้นยังไง ไม่ต้องกังวล วันนี้ผมมีวิธีง่ายๆ ในการตั้งค่า MongoDB ด้วย Docker Compose มาฝากกัน รับรองว่าทำตามได้ไม่ยากเลย!
สิ่งที่ต้องเตรียม
ก่อนอื่น เรามาดูไฟล์ docker-compose.yml ของเรากันก่อน ว่ามันทำงานยังไง
version: '3.8'
name: my-app
services:
mongodb:
image: mongo:latest
restart: always
ports:
- 27035:27017
environment:
MONGO_INITDB_DATABASE: my-database
volumes:
- mongodb-data:/data/db
- ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js
volumes:
mongodb-data:
driver: local
และไฟล์ init-mongo.js
db.createCollection('users');
อธิบายไฟล์ Docker Compose
- version: เวอร์ชันที่ใช้คือ 3.8 ซึ่งเป็นเวอร์ชันที่รองรับการใช้งานฟีเจอร์ต่างๆ ของ Docker Compose ได้ครบถ้วน
- services: กำหนดว่าต้องการใช้งานอะไรบ้าง ในที่นี้เราจะใช้ MongoDB
- mongodb: กำหนดชื่อของ service เป็น mongodb
- image: ใช้ MongoDB เวอร์ชันล่าสุด
- restart: ตั้งค่าให้ container เริ่มทำงานใหม่เมื่อเกิดข้อผิดพลาด
- ports: เชื่อมต่อพอร์ต 27035 ของเครื่องเราไปยังพอร์ต 27017 ของ MongoDB ภายใน container
- environment: กำหนดชื่อฐานข้อมูลเริ่มต้นเป็น my-database
- volumes: ใช้เก็บข้อมูลของ MongoDB และรันสคริปต์ init-mongo.js ตอนเริ่มต้น
- mongodb: กำหนดชื่อของ service เป็น mongodb
การใช้งาน init-mongo.js
ไฟล์ init-mongo.js สามารถใช้เพื่อกำหนดข้อมูลเริ่มต้นให้กับ MongoDB เช่น การสร้าง collection หรือการ insert ข้อมูลเริ่มต้นในฐานข้อมูล
การเชื่อมต่อกับ MongoDB
หลังจากรัน Docker Compose แล้ว เราสามารถเชื่อมต่อกับ MongoDB ได้ง่ายๆ ด้วย connection string ต่อไปนี้
จากภายนอก Docker
mongodb://localhost:27035/my-database
จากภายใน Docker network
mongodb://mongodb:27017/my-database
สรุป
การตั้งค่า MongoDB ด้วย Docker Compose เป็นวิธีที่ง่ายและสะดวกสำหรับการเริ่มต้นใช้งานฐานข้อมูล ไม่ว่าจะเป็นการพัฒนาแอปพลิเคชันในเครื่อง หรือใช้ในสภาพแวดล้อมการทดสอบ เพียงแค่เขียนไฟล์ docker-compose.yml อย่างที่เรายกตัวอย่างไป คุณก็พร้อมที่จะใช้งาน MongoDB ได้เลย!