Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
docker-compose [2021/10/26 14:32] enrique_mieza_sanchez [Escalat de contenidors] |
docker-compose [2023/10/17 18:28] (actual) enric_mieza_sanchez [Escalat amb Wordpress] |
||
|---|---|---|---|
| Línia 10: | Línia 10: | ||
| * [[Docker]] pràctiques inicials a bytes.cat | * [[Docker]] pràctiques inicials a bytes.cat | ||
| - | {{tag> #Asix #Ceti #Ciber #CetiMp03 #CiberMp03 }} | + | Segueix a: |
| + | * [[Docker upgrade de containers]] | ||
| + | * [[Dockerfile]] | ||
| + | |||
| + | |||
| + | {{tag> | ||
| ===== Instal·lació ===== | ===== Instal·lació ===== | ||
| Línia 40: | Línia 45: | ||
| {{load_balancer.png}} | {{load_balancer.png}} | ||
| - | Anem a veure com escalar el sistema Wordpress que hem muntat | + | Anem a fer un simple servidor web amb el docker '' |
| + | <file yaml docker-compose.yml> | ||
| + | version: " | ||
| - | Aixeca' | + | services: |
| - | $ docker-compose up -d | + | |
| - | Prova d'escalar-ho amb: | + | web: |
| - | | + | image: nginxdemos/ |
| + | ports: | ||
| + | # important marcar el port intern 80 sense assignar a un d'extern | ||
| + | # | ||
| + | | ||
| - | Veurem que no ens deixa i ens dona un error de que el port està en ús: | ||
| - | Cannot start service wordpress: ... : Bind for 0.0.0.0: | ||
| - | |||
| - | És normal ja que no puc replicar diversos contenidors que es publiquin al mateix port de la màquina //host//. La solució és canviar la línia de publicació del port 80 i substituir-la per aquesta, on no s' | ||
| - | <file yml docker-compose.yml> | ||
| - | ... | ||
| - | wordpress: | ||
| - | ... | ||
| - | ports: | ||
| - | - 80 # abans era 8080:80 | ||
| - | ... | ||
| </ | </ | ||
| - | Per poder publicar tots els contenidors al mateix rang, podem destruir els contenidors wordpress i no el de la BD: | + | Arranquem amb: |
| - | | + | docker-compose |
| - | I els tornem a aixecar | + | Escalem |
| - | | + | docker-compose up -d --scale |
| - | Podem veure els contenidors creats | + | Comprovem estat dels nodes amb: |
| - | | + | docker-compose ps |
| + | Name | ||
| + | -------------------------------------------------------------------------- | ||
| + | www_web_1 | ||
| + | www_web_2 | ||
| + | www_web_3 | ||
| + | |||
| + | A la mostra veiem que cada node té assignat un port, començant pel 49159. Els nombres de port i de container no tenen perquè ser correlatius. Podem accedir-hi mitjançant el //browser// a la URL: | ||
| + | http:// | ||
| \\ | \\ | ||
| - | ===== Actualització | + | ===== Balanç |
| + | Per a arrodonir aquest exercici necessitem un balancejador de càrrega que enllaci amb un o altre node web. | ||
| - | Després de fer una instal·lació caldrà mantenir-la, i fer un //update// és una pràctica imprescindible per posar remei a certes vulnerabilitats. | + | <file yaml docker-compose.yml> |
| + | version: " | ||
| - | Algunes consideracions: | + | services: |
| - | * Cada CMS o software tenen la seva pròpia manera de dockeritzar-se i hi ha algunes pràctiques o tendències comunes. | + | |
| - | * No es pot generalitzar un procés únic d' | + | |
| - | * Com veurem, un cop realitzada la instal·lació i amb el volum persistit, canviar el container pot no canviar directament la versió del // | + | |
| - | * Veurem dos casos paradigmàtics, | + | |
| - | * Per actualitzar, | + | |
| - | <WRAP tip> | + | web: |
| - | 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' | + | |
| - | </WRAP> | + | ports: |
| + | # importante marcar puerto interno 80 sin asignar a uno externo | ||
| + | # docker-machine le asignará puerto externo automáticamente | ||
| + | - 80 | ||
| + | lb: | ||
| + | image: dockercloud/ | ||
| + | ports: | ||
| + | - 8085:80 | ||
| + | links: | ||
| + | - web | ||
| + | volumes: | ||
| + | - / | ||
| + | </file> | ||
| - | ==== Actualitzar Wordpress docker ==== | + | Veiem que ja no cal redireccionar |
| - | <WRAP todo> | + | |
| - | Actualització de contenidors: | + | |
| - | * Instal·la la versió 4 de Wordpress en una nova carpeta de projecte. | + | |
| - | * Caldrà | + | |
| - | * Per identificar si l' | + | |
| - | * Edita el nom del //blog// | + | |
| - | * Afegeix un article que es vegi a la portada. | + | |
| - | * Personalitza el skin (canvia per algun ben diferent del // | + | |
| - | * Entra al contenidor del // | + | |
| - | * 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' | + | Ho aixequem tot amb: |
| - | | + | |
| - | | + | |
| - | | + | Comprovem que estan en marxa els 3 nodes web amb + el HAProxy |
| - | * Visualitza el Wordpress per veure si segueix funcionant. | + | |
| - | * Entra al contenidor | + | |
| - | * Quins canvis hi ha hagut? | + | HAProxy |
| - | </ | + | |
| \\ | \\ | ||
| - | ==== Actualitzar Mediawiki docker | + | ===== Escalat amb Wordpress ===== |
| - | Aquest cas és diferent de l' | + | |
| <WRAP todo> | <WRAP todo> | ||
| - | | + | Anem a fer un '' |
| - | * Canviar al '' | + | * Crea un docker-compose a partir de l'[[https:// |
| - | * Persisir les carpetes: | + | * Configura'l per a poder escalar el contenidor de wordpress (el de la base de dades ha de ser únic). |
| - | * '' | + | * Afegeix també un LB (o //load balancer//) '' |
| - | * ''/var/www/html/images'' | + | * En total ha de tenir 3 serveis: wordpress, db i lb. |
| - | - Tal i com s'explica a la documentació i als comentaris del docker-compose, cal descarregar | + | * Assegura't que: |
| - | | + | * El //service// '' |
| - | - Comprovar | + | * No t'interfereix |
| - | - Destruir la instància mitjançant:< | + | * El LB apunta al servei |
| - | - Canviar | + | |
| - | - 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 | + | * Edita l' |
| - | - Actualitzar la BD anant a < | + | $ sudo vi /var/lib/ |
| - | - Ens demanarà la '' | + | </code></ |
| - | | + | * Introdueix aquesta línia just després del '' |
| + | echo "IP Address: ".$_SERVER[" | ||
| + | </ | ||
| + | <tabbox Opció hack 2 (theme twentytwentyone)> | ||
| + | * Activa el tema '' | ||
| + | * Edita l' | ||
| + | $ sudo vi /var/lib/docker/ | ||
| + | </code></ | ||
| + | * Introdueix aquesta línia després del '' | ||
| + | echo "IP Address: ".$_SERVER[" | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| </ | </ | ||
| - | \\ | ||