ในที่สุดก็หาวิธีอัปเกรด Windows Docker Toolbox เป็น v1.12.5 และทำให้ไดรฟ์ข้อมูลของฉันทำงานได้โดยการเพิ่มโฟลเดอร์ที่ใช้ร่วมกันในOracle VM VirtualBox
ตัวจัดการและปิดการใช้งานการแปลงเส้นทาง หากคุณมี Windows 10+ คุณควรใช้ Docker รุ่นใหม่สำหรับ Windows
ความเจ็บปวดในการอัพเกรดครั้งแรก:
- ถอนการติดตั้ง VirtualBox ก่อน
- ใช่นั่นอาจทำให้สิ่งต่างๆในเครื่องมืออื่น ๆ เช่น Android Studio เสียหาย ขอบคุณ Docker :(
- ติดตั้ง Docker Toolbox เวอร์ชันใหม่
ตัวอย่างฐานข้อมูล Redis:
redis:
image: redis:alpine
container_name: redis
ports:
- "6379"
volumes:
- "/var/db/redis:/data:rw"
ใน Docker Quickstart Terminal ....
- รัน
docker-machine stop default
- ตรวจสอบให้แน่ใจว่า VM ถูกลาก
ใน Oracle VM VirtualBox Manager ...
- เพิ่มโฟลเดอร์ที่แชร์ใน
default
VM ผ่านหรือบรรทัดคำสั่ง
D:\Projects\MyProject\db
=> /var/db
ในdocker-compose.yml
...
- ไดรฟ์ข้อมูล Redis ที่แมปเป็น:
"/var/db/redis:/data:rw"
ใน Docker Quickstart Terminal ....
- ตั้งค่า
COMPOSE_CONVERT_WINDOWS_PATHS=0
(สำหรับรุ่น Toolbox> = 1.9.0)
- รัน
docker-machine start default
เพื่อรีสตาร์ท VM
cd D:\Projects\MyProject\
docker-compose up
ควรใช้งานได้แล้ว
ตอนนี้สร้างฐานข้อมูล redis ในรูปแบบ D:\Projects\MyProject\db\redis\dump.rdb
เหตุใดจึงควรหลีกเลี่ยงเส้นทางโฮสต์สัมพัทธ์
ฉันหลีกเลี่ยงเส้นทางโฮสต์สัมพัทธ์สำหรับ Windows Toolbox เนื่องจากอาจแนะนำตัวอักษร "\" ที่ไม่ถูกต้อง มันไม่ดีเท่าการใช้เส้นทางที่สัมพันธ์กับdocker-compose.yml
แต่อย่างน้อยนักพัฒนาเพื่อนของฉันก็สามารถทำได้อย่างง่ายดายแม้ว่าโฟลเดอร์โครงการของพวกเขาจะอยู่ที่อื่นโดยไม่ต้องแฮ็กdocker-compose.yml
ไฟล์ (ไม่ดีสำหรับ SCM)
ฉบับดั้งเดิม
FYI ... นี่คือข้อผิดพลาดดั้งเดิมที่ฉันได้รับเมื่อฉันใช้เส้นทางสัมพัทธ์ที่ดีสะอาดซึ่งเคยใช้งานได้ดีสำหรับเวอร์ชันเก่า การแมปโวลุ่มของฉันเคยเป็นเพียง"./db/redis:/data:rw"
ERROR: for redis Cannot create container for service redis: Invalid bind mount spec "D:\\Projects\\MyProject\\db\\redis:/data:rw": Invalid volume specification: 'D:\Projects\MyProject\db\redis:/data
นี่แตกด้วยเหตุผลสองประการ ..
- ไม่สามารถเข้าถึง
D:
ไดรฟ์
- เส้นทางไดรฟ์ข้อมูลไม่สามารถรวม
\
อักขระ
docker-compose
เพิ่มพวกเขาแล้วโทษคุณ !!
- ใช้
COMPOSE_CONVERT_WINDOWS_PATHS=0
เพื่อหยุดเรื่องไร้สาระนี้
ฉันขอแนะนำให้จัดทำเอกสารการแมปโฟลเดอร์ที่แชร์ VM เพิ่มเติมในdocker-compose.yml
ไฟล์ของคุณเนื่องจากคุณอาจต้องถอนการติดตั้ง VirtualBox อีกครั้งและรีเซ็ตโฟลเดอร์ที่แชร์และเพื่อนร่วมงานของคุณจะรักคุณ