Considere para estas respuestas:
- El nombre de la base de datos es
app_schema
- El nombre del contenedor es
app_db
- La contraseña de root es
root123
Cómo actualizar MySQL al almacenar datos de la aplicación dentro del contenedor
Esto se considera una mala práctica , porque si pierde el contenedor, perderá los datos. Aunque es una mala práctica, aquí hay una posible forma de hacerlo:
1) Realice un volcado de la base de datos como SQL:
docker exec app_db sh -c 'exec mysqldump app_schema -uroot -proot123' > database_dump.sql
2) Actualiza la imagen:
docker pull mysql:5.6
3) Actualice el contenedor:
docker rm -f app_db
docker run --name app_db --restart unless-stopped \
-e MYSQL_ROOT_PASSWORD=root123 \
-d mysql:5.6
4) Restaurar el volcado de la base de datos:
docker exec app_db sh -c 'exec mysql -uroot -proot123' < database_dump.sql
Cómo actualizar el contenedor MySQL usando un volumen externo
Usar un volumen externo es una mejor manera de administrar los datos y facilita la actualización de MySQL. Perder el contenedor no perderá ningún dato. Puede usar docker-compose para facilitar la administración de aplicaciones Docker de contenedores múltiples en un solo host:
1) Cree el docker-compose.yml
archivo para administrar sus aplicaciones:
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) Actualice MySQL (desde la misma carpeta que el docker-compose.yml
archivo):
docker-compose pull
docker-compose up -d
Nota: el último comando anterior actualizará la imagen MySQL, recreará e iniciará el contenedor con la nueva imagen.