พิจารณาคำตอบนี้:
- ชื่อฐานข้อมูลคือ
app_schema
- ชื่อคอนเทนเนอร์คือ
app_db
- รหัสผ่านรูทคือ
root123
วิธีอัปเดต MySQL เมื่อเก็บข้อมูลแอปพลิเคชันภายในคอนเทนเนอร์
นี่ถือว่าเป็นแนวปฏิบัติที่ไม่ดีเพราะถ้าคุณทำคอนเทนเนอร์หายคุณจะสูญเสียข้อมูล แม้ว่าจะเป็นการฝึกฝนที่ไม่ดี แต่นี่เป็นวิธีที่เป็นไปได้:
1) ทำการดัมพ์ฐานข้อมูลเป็น SQL:
docker exec app_db sh -c 'exec mysqldump app_schema -uroot -proot123' > database_dump.sql
2) อัปเดตภาพ:
docker pull mysql:5.6
3) อัปเดตคอนเทนเนอร์:
docker rm -f app_db
docker run --name app_db --restart unless-stopped \
-e MYSQL_ROOT_PASSWORD=root123 \
-d mysql:5.6
4) กู้คืนดัมพ์ของฐานข้อมูล:
docker exec app_db sh -c 'exec mysql -uroot -proot123' < database_dump.sql
วิธีอัปเดตคอนเทนเนอร์ MySQL โดยใช้ไดรฟ์ข้อมูลภายนอก
การใช้ไดรฟ์ข้อมูลภายนอกเป็นวิธีที่ดีกว่าในการจัดการข้อมูลและทำให้การปรับปรุง MySQL ง่ายขึ้น การสูญเสียคอนเทนเนอร์จะไม่ทำให้ข้อมูลสูญหาย คุณสามารถใช้นักเทียบท่าเพื่ออำนวยความสะดวกในการจัดการแอปพลิเคชันนักเทียบท่าหลายคอนเทนเนอร์ในโฮสต์เดียว:
1) สร้างdocker-compose.yml
ไฟล์เพื่อจัดการแอปพลิเคชันของคุณ:
version: '2'
services:
app_db:
image: mysql:5.6
restart: unless-stopped
volumes_from: app_db_data
app_db_data:
volumes: /my/data/dir:/var/lib/mysql
2) อัพเดท MySQL (จากโฟลเดอร์เดียวกับdocker-compose.yml
ไฟล์):
docker-compose pull
docker-compose up -d
หมายเหตุ: คำสั่งสุดท้ายข้างต้นจะอัปเดตอิมเมจ MySQL สร้างใหม่และเริ่มคอนเทนเนอร์ด้วยอิมเมจใหม่