====== Upgrade de contenidors amb Docker ======
Amb [[Docker]] podem fer desplegaments molt ràpids, eficients i segurs, però cal també mantenir-los. Entre altres tasques, caldrà actualitzar les versions del CMS que instal·lem i de les seves llibreries internes.
Referències en aquesta mateixa wiki:
* [[Docker-compose]]
* [[Docker]]
{{tag> #Asix #Ceti #Ciber #CetiMp03 #CiberMp03 docker compose update upgrade actualitzacio DevOps containers contenidors }}
===== Introducció =====
Algunes consideracions:
* Cada CMS o software tenen la seva pròpia manera de "dockeritzar-se", tot i que hi ha algunes bones pràctiques comunes.
* No es pot generalitzar un procés únic d'actualització.
* Com veurem, un cop realitzada la instal·lació i amb el volum persistit, canviar el container pot no canviar directament la versió del //software// del CMS. Actualitzar el container de Wordpress només actualitza la versió de PHP i no la del CMS.
* Veurem dos casos paradigmàtics, el docker de Wordpress no canvia la seva versió i el Mediawiki, en canvi, sí. Tot depèn de com han estat configurats.
* Per actualitzar, finalment, caldrà fer-ho des del propi //backend// del CMS.
Si hi hagués algun conflicte amb les versions de partida i destí de PHP que necessita el CMS, una possible solució seria fer l'actualització en 2 passes, passant per una versió intermitja que tingui una versió de PHP compatible amb les dues versions.
\\
===== Actualitzar Wordpress docker =====
Farem servir el docker-compose de la [[https://hub.docker.com/_/wordpress|pàgina oficial de Wordpres Docker]].
Actualització de contenidors:
* Instal·la la versió 4 de Wordpress en una nova carpeta de projecte.
* Caldrà que canviïs el //tag// del contenidor //wordpress//.
* Per identificar si l'upgrade funciona, cal que personalitzem la instal·lació:
* Edita el nom del //blog//
* Afegeix un article que es vegi a la portada.
* Personalitza el skin (canvia per algun ben diferent del //default//).
* Entra al contenidor del //wordpress// i comprova quines versions tenim:
* Versió de PHP
* Versió exacta del Wordpress (li hem dit la 4, però no sabem si haurà instal·lat la 4.1 o la 4.8.2...)
Passem a fer l'upgrade:
* Apaga el projecte de contenidors amb un ''down''.
* Canvia el //tag// a la darrera versió estable (no facis //latest//, ja que al traslladar el container a un altre lloc en un altre moment ens podria descarregar una altra versió).
* Engega de nou el projecte.
* Visualitza el Wordpress per veure si segueix funcionant.
* Entra al contenidor //wordpress// i comprova les versions de PHP i del propi WP.
* Quins canvis hi ha hagut?
\\
===== Actualitzar Mediawiki docker =====
Aquest cas és diferent de l'anterior. Canviar el contenidor sí que modificarà la versió del //software// del CMS.
- [[https://hub.docker.com/_/mediawiki|Instal·la Mediawiki amb Docker]] amb algunes modificacions:
* Canviar al ''docker-compose'' la versió de Mediawiki a la 1.31.
* Persisir les carpetes:
* ''/var/lib/mysql'' del contenidor ''database''
* ''/var/www/html/images'' del contenidor ''mediawiki''
- Tal i com s'explica a la documentació i als comentaris del docker-compose, cal descarregar ''LocalSettings.php'' al mateix directori del ''docker-compose.yml'' i descomentar la línia:# - ./LocalSettings.php:/var/www/html/LocalSettings.php
- Destruir (down) i arrencar de nou (up) la instància. Comprovar que funciona i afegir alguna frase a la pàgina principal per a testejar.
- Comprovar que tenim la versió 1.31 a la pàginahttp://localhost:8080/index.php/Especial:Versió
- Destruir la instància mitjançant: $ docker-compose down
- Canviar (actualitzar) la versió de Mediawiki a la 1.36
- Posar en marxa de nou la instància.
- Consultar la pàgina d'actualització oficial de la Mediawiki. Al canviar el //docker// hem actualitzat el software (codi PHP) però cal actualitzar les taules de la BD.
- Actualitzar la BD anant a http://localhost:8080/mw-config
- Ens demanarà la ''upgrade-key'' que està a LocalSettings.php . Seguim el procès d'upgrade fins el final.
- Comprovar que s'ha actualitzat correctament la versió de Mediawiki.
\\