Xem xét cho câu trả lời này:
- Tên cơ sở dữ liệu là
app_schema
- Tên container là
app_db
- Mật khẩu gốc là
root123
Cách cập nhật MySQL khi lưu trữ dữ liệu ứng dụng bên trong container
Đây được coi là một thực tiễn xấu , bởi vì nếu bạn mất container, bạn sẽ mất dữ liệu. Mặc dù đó là một thực hành xấu, đây là một cách có thể để làm điều đó:
1) Thực hiện kết xuất cơ sở dữ liệu dưới dạng SQL:
docker exec app_db sh -c 'exec mysqldump app_schema -uroot -proot123' > database_dump.sql
2) Cập nhật hình ảnh:
docker pull mysql:5.6
3) Cập nhật container:
docker rm -f app_db
docker run --name app_db --restart unless-stopped \
-e MYSQL_ROOT_PASSWORD=root123 \
-d mysql:5.6
4) Khôi phục kết xuất cơ sở dữ liệu:
docker exec app_db sh -c 'exec mysql -uroot -proot123' < database_dump.sql
Cách cập nhật vùng chứa MySQL bằng cách sử dụng âm lượng bên ngoài
Sử dụng một khối lượng bên ngoài là một cách tốt hơn để quản lý dữ liệu và giúp cập nhật MySQL dễ dàng hơn. Mất container sẽ không mất bất kỳ dữ liệu. Bạn có thể sử dụng docker-compose để tạo điều kiện quản lý các ứng dụng Docker nhiều container trong một máy chủ:
1) Tạo docker-compose.yml
tệp để quản lý các ứng dụng của bạn:
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) Cập nhật MySQL (từ cùng thư mục với docker-compose.yml
tệp):
docker-compose pull
docker-compose up -d
Lưu ý: lệnh cuối cùng ở trên sẽ cập nhật hình ảnh MySQL, tạo lại và bắt đầu vùng chứa với hình ảnh mới.