ไฟล์เขียนของนักเทียบท่าของฉันมีสามคอนเทนเนอร์เว็บ nginx และ postgres Postgres มีลักษณะเช่นนี้:
postgres:
container_name: postgres
restart: always
image: postgres:latest
volumes:
- ./database:/var/lib/postgresql
ports:
- "5432:5432
เป้าหมายของฉันคือการติดปริมาณซึ่งสอดคล้องกับโฟลเดอร์ท้องถิ่นเรียกว่า./databaseภายใน postgres /var/lib/postgresคอนเทนเนอร์ เมื่อฉันเริ่มต้นคอนเทนเนอร์เหล่านี้และแทรกข้อมูลลงใน postgres ฉันตรวจสอบว่า/var/lib/postgres/data/base/เต็มไปด้วยข้อมูลที่ฉันเพิ่ม (ในคอนเทนเนอร์ postgres) แต่ในระบบท้องถิ่นของฉัน./databaseจะได้รับdataโฟลเดอร์เท่านั้นเช่น./database/dataถูกสร้างขึ้น แต่ว่างเปล่า . ทำไม?
หมายเหตุ:
อัพเดท 1
ตามคำแนะนำของ Nick ฉันได้docker inspectและพบ:
"Mounts": [
{
"Source": "/Users/alex/Documents/MyApp/database",
"Destination": "/var/lib/postgresql",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Name": "e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35",
"Source": "/var/lib/docker/volumes/e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35/_data",
"Destination": "/var/lib/postgresql/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
ซึ่งทำให้ดูเหมือนว่าข้อมูลกำลังถูกขโมยโดยโวลุ่มอื่นที่ฉันไม่ได้รหัสด้วยตัวเอง ไม่แน่ใจว่าทำไม ภาพ postgres สร้างระดับเสียงนั้นสำหรับฉันหรือไม่ ถ้าเป็นเช่นนั้นจะมีวิธีการใช้ระดับเสียงนั้นแทนที่จะเป็นปริมาณที่ฉันกำลังติดตั้งเมื่อฉันรีสตาร์ท? มิฉะนั้นจะมีวิธีที่ดีในการปิดการใช้งานไดรฟ์ข้อมูลอื่นและใช้งานเอง./databaseหรือไม่?
อัพเดท 2
ฉันพบวิธีแก้ปัญหาขอบคุณ Nick! (และเพื่อนอีกคน) คำตอบด้านล่าง
from app import dbและdb.create_all()จากdocker runหลังจากที่เริ่มต้นภาชนะบรรจุ ฉันไม่ได้initdbโดยตรงจากบรรทัดคำสั่ง
sudo su -และมอง./database/dataมา ไม่มีอะไรในนั้นเท่าที่ฉันสามารถบอกได้
initdbบรรทัดคำสั่งแล้วเพื่อเริ่มต้นคลัสเตอร์ฐานข้อมูลของคุณหรือไม่