มีสองสิ่งในการตั้งค่าของคุณที่ฉันจะทำแตกต่างออกไป และฉันจะพยายามสรุปสิ่งนี้ในคำตอบของฉัน ฉันไม่สามารถรับประกันได้ว่าจะใช้งานได้ แต่ฉันจะตั้งค่าคอนเทนเนอร์อย่างไร หวังว่าจะช่วยได้
ก่อนอื่นฉันจะไม่เมานต์ดิสก์ข้อมูลด้วย uid
และ กิด
คุณลักษณะ. ฉันจะเมานต์ด้วยแอตทริบิวต์เริ่มต้นเช่นนี้
UUID=MY_UUID /home/user/my_mount_point auto umask=022 ค่าเริ่มต้น 0 1
(จากนี้ไปจะใช้ /home/user/my_mount_point
เป็นข้อมูลอ้างอิงจากตำแหน่งที่เมาต์ดิสก์ของคุณ)
ประการที่สอง ฉันไม่เข้าใจการอ้างอิงปริมาณของคุณใน นักเทียบท่า-compose.yml
. ฉันจะมีสิ่งนี้:
ปริมาณ:
- /home/user/my_mount_point/db-volume-folder/db-one:/var/lib/mysql
โปรดทราบว่าฉันจะใช้เส้นทางที่แน่นอนเสมอใน นักเทียบท่า-compose.yml
.
นอกจากนี้ ความเป็นเจ้าของควรตรงกับคอนเทนเนอร์ที่ทำงานอยู่ ดังนั้นโฟลเดอร์ ฐานข้อมูลหนึ่ง
ควรเป็นเจ้าของโดย root
myUser@ubuntu:~/my_mount_point/db-volume-folder$
drwxr-xr-x 3 รูทรูท 4028276 26 ก.ค. 04:47 น.
โปรดทราบว่าชื่อโฟลเดอร์ ฐานข้อมูลหนึ่ง
ควรตรงกับ โฟลเดอร์สุดท้าย บน ด้านซ้าย ในเส้นทางเมานต์โวลุ่ม - นี่คือโฟลเดอร์ที่สิทธิ์มีความสำคัญ
ประการสุดท้าย ดังที่คุณได้กล่าวไว้ นักเทียบท่าเขียนยังสนับสนุนให้คุณระบุผู้ใช้ที่คอนเทนเนอร์ควรเรียกใช้ด้วย ดังนั้นฉันเชื่อว่าคุณสามารถเปลี่ยนผู้ใช้และเปลี่ยนความเป็นเจ้าของได้
ดังนั้นหากคุณเปลี่ยนผู้ใช้ดังนี้:
รุ่น: "3.7"
บริการ:
my_sql_db:
ชื่อคอนเทนเนอร์: my_sql_db
ผู้ใช้: myUser
จากนั้นสิทธิ์ของโฟลเดอร์ที่จะจับคู่:
myUser@ubuntu:~/my_mount_point/db-volume-folder$
drwxr-xr-x 3 myUser myUser 4028276 26 ก.ค. 04:47 น.
ฉันหวังว่าคำแนะนำบางส่วนจะใช้ได้ผลสำหรับคุณ โปรดแจ้งให้เราทราบหากได้ผล
แก้ไข:
ฉันเพิ่งทดสอบคอนเทนเนอร์ MySql ด้วย docker-compose.yml ต่อไปนี้:
รุ่น: "3.7"
บริการ:
my_sql_db:
ชื่อคอนเทนเนอร์: my_sql_db
ผู้ใช้: ราก
รูปภาพ: mysql/mysql-server:latest
พอร์ต:
- "1533:3306"
สิ่งแวดล้อม:
MYSQL_ROOT_PASSWORD: ความลับสุดยอด
MYSQL_USER: mysqluser
MYSQL_PASSWORD: รหัสผ่าน mysql
ปริมาณ:
- /mnt/zfs/docker-data/mysql-test/db-one:/var/lib/mysql
รีสตาร์ท: เสมอ
นี่คือเนื้อหาของโฟลเดอร์ /mnt/zfs/docker-data/mysql-test
:
/mnt/zfs/docker-data/mysql-test$ ls -la
รวม 7
drwxr-xr-x 3 รูท รูท 4 1 ส.ค. 22:02 .
drwxr-xr-x 22 รูท 22 ส.ค. 1 21:47 ..
drwxr-xr-x 6 27 sudo 30 ส.ค. 1 21:59 น. db-หนึ่ง
-rw-r--r-- 1 รูท 374 1 ส.ค. 21:58 docker-compose.yml
ด้วยวิธีนี้คอนเทนเนอร์จึงสำเร็จ ดูเหมือนว่าตัวคอนเทนเนอร์จะเปลี่ยนความเป็นเจ้าของเป็น 27:ซูโด
(ฉันเดาว่านี่เป็นค่าเริ่มต้น)
ถ้าฉันเปลี่ยนผู้ใช้ใน นักเทียบท่า-compose.yml
ถึง myuser:myuser
และเปลี่ยนสิทธิ์ในโฟลเดอร์ด้วย ฐานข้อมูลหนึ่ง
ถึง myuser:myuser
ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามเริ่มคอนเทนเนอร์:
ข้อผิดพลาด: สำหรับ my_sql_db ไม่สามารถเริ่มบริการ my_sql_db: ไม่พบผู้ใช้ myuser: ไม่มีรายการที่ตรงกันในไฟล์ passwd
ดูเหมือนว่าปัญหาจะอยู่ระหว่างการจับคู่ผู้ใช้ ไม่ใช่การเป็นเจ้าของระบบไฟล์ และหากคุณพบข้อผิดพลาดอื่น อาจเป็นอย่างอื่นนอกเหนือจากความเป็นเจ้าของระบบไฟล์ ดูลิงก์ของฉันในความคิดเห็น