สถาปัตยกรรม
Client
↓
Port 27017 (MongoDB protocol)
↓
FerretDB container
↓
PostgreSQL container (internal Docker network)
↓
Persistent storage directory
FerretDB แปลงคำขอ MongoDB wire protocol เป็น PostgreSQL queries ภายใน
PostgreSQL ไม่ได้เปิดสู่สาธารณะ
พอร์ต
- 27017/tcp → endpoint ที่เข้ากันได้กับ MongoDB แบบสาธารณะ
- 5432/tcp → PostgreSQL ภายใน (ไม่เปิดออกภายนอก)
การเข้าถึง
ข้อมูลอ้างอิงข้อมูลรับรอง: /root/ferretdb/.env
ติดตั้ง client หากจำเป็น:
apt install -y mongodb-mongosh
เชื่อมต่อด้วยการยืนยันตัวตน:
mongosh "mongodb://<USERNAME>:<PASSWORD>@<SERVER_IP>:27017/<DATABASE>?authSource=postgres"
ไฟล์และไดเรกทอรีที่สำคัญ
- ไดเรกทอรีติดตั้ง:
/root/ferretdb - Compose file:
ไฟล์ Compose:
/root/ferretdb/docker-compose.yml - ไฟล์ environment:
/root/ferretdb/.env - ไดเรกทอรีข้อมูล PostgreSQL:
/root/ferretdb/data
การจัดการบริการ
ตรวจสอบสถานะ:
docker ps
ดู logs:
docker compose -f /root/ferretdb/docker-compose.yml logs -f
รีสตาร์ทบริการ:
docker compose -f /root/ferretdb/docker-compose.yml restart
คำสั่ง MongoDB ที่ใช้บ่อย
แสดงรายการฐานข้อมูล:
show dbs
สลับฐานข้อมูล:
use postgres
แสดงรายการ collections:
show collections
ดูเอกสาร:
db.collection_name.find()
เพิ่มเอกสาร:
db.collection_name.insertOne({ name: "example" })
ออกจาก shell:
exit
ผูก FerretDB เข้ากับ Localhost เพื่อความปลอดภัย
เปิดใช้งานการยืนยันตัวตนแล้ว แต่บริการฐานข้อมูลที่เปิดออกยังคงมีความเสี่ยง
แก้ไข: /root/ferretdb/.env
เปลี่ยน HOST=0.0.0.0 to HOST=127.0.0.1
จากนั้นปรับใช้การเปลี่ยนแปลง:
docker compose -f /root/ferretdb/docker-compose.yml up -d
ตอนนี้บริการไม่สามารถเข้าถึงได้จากภายนอก
เข้าถึงโดยใช้ SSH port forwarding
จากเครื่องของคุณ:
ssh -L 27017:localhost:27017 root@<SERVER_IP>
จากนั้นเชื่อมต่อในเครื่อง:
mongosh "mongodb://<USERNAME>:<PASSWORD>@localhost:27017/<DATABASE>?authSource=postgres