Pasos para Actualizar Aplicación¶
Para Django 1.6¶
Para la versión de Django 1.6, si hay alguna modificación en la base de datos, es necesario eliminar la base de datos roj_inventory_db y crear una nueva. Para realizar este proceso es necesario hacer un backup de la base de datos tanto en mysql y en formato json.
Con Modificación en la Base de Datos:¶
Detener el contenedor en cuestión:
docker stop sysinv09
Ejecutar el mismo contenedor en diferente puerto (3011). (Para que el usuario no tengas acceso):
docker run -d --name sysinv09 --link mysql-sysinv-server -p 3011:3010 -v /home/soporte/docker_shared/django_inventory/media:/myapp/django_inventory/media --add-host smtp_server:172.17.0.1 sys_inv:09
Realizar un mysqldump (.sql) para tener un backup de la base de datos:
docker exec -i mysql-sysinv-server mysqldump -uroj_inventario -p<password> roj_inventario_db > /home/soporte/docker_shared/bk_db_2017MD_HORA.sql
Ejecutar una sesión interactiva en el docker de la aplicación:
docker exec -i -t sysinv09 /bin/bash
Dentro de la aplicación realizar un dumpdata para tener un backup de la base de datos en (.json):
python manage.py dumpdata --exclude auth.permission --exclude contenttypes > /myapp/django_inventory/media/backup_data/sysinv_2017MD_HORA.json
Salir de la sesión interactiva:
(exit)
Entrar a la aplicación y realizar
svn update
para actualizar a la última versión del repositorio. Si no permite la ejecución "update" realizar:svn checkout --username=<username> http://jro-dev.igp.gob.pe/svn/jro_soft/soft_dev/projects/inventario2.0/trunk/django/django-inventory/
(opcional)Crear nueva imagen con la última versión ejecutando:
docker build -t sis_inv:v10 .
(Nótese que hay un caracter '.' al final del comando)Crear contenedor con la última imagen creada con puerto distinto (3010):
docker run -d --name sysinv10 --link mysql-sysinv-server -p 3010:3010 -v /home/soporte/docker_shared/django_inventory/media:/myapp/django_inventory/media --add-host smtp_server:172.17.0.1 sys_inv:v10
Iniciar sesión interactiva en el docker donde corre la base de datos (mysql):
docker exec -i -t mysql-sysinv-server /bin/bash
Eliminar la base de datos: roj_inventario_db y volver a crearla:
DROP DATABASE roj_inventory_db
yCREATE DATABASE roj_inventory_db
Realizar sesión interactiva en el último contenedor creado:
docker exec -i -t sysinv10 /bin/bash
En el contenedor ejecutar
python manage.py syncdb
ypython manage.py migrate
Cargar la data en json que se descargó del anterior contenedor:
python manage.py loaddata django_inventory/media/backup_data/sysinv_20170110_1142.json
Parar y reiniciar el nuevo contenedor:
docker stop sysinv10
ydocker start sysinv10
(No se ejecuta run porque solo sirve para crear el contenedor, una vez creado se usa "start")Si la Web funciona correctamente, eliminar antiguo contenedor que corre en otro puerto:
docker rm sysinv09
Sin Modificación en la Base de Datos:¶
Detener el contenedor en cuestión:
docker stop sysinv09
.Entrar a la aplicación y realizar
svn update
para actualizar a la última versión del repositorio.Crear nueva imagen con la última versión ejecutando:
docker build -t sis_inv:v10 .
Crear contenedor con la última imagen creada con el puerto deseado:
docker run -d --name sysinv10 --link mysql-sysinv-server -p 3010:3010 -v /home/soporte/docker_shared/django_inventory/media:/myapp/django_inventory/media --add-host smtp_server:172.17.0.1 sys_inv:v10
Si la Web funciona correctamente, eliminar antiguo contenedor:
docker rm sysinv09