bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


dockeritzacio_aplicacions_php

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
Següent revisió Ambdós costats nova versio
dockeritzacio_aplicacions_php [2022/07/13 11:06]
jordi_selga_ruiz
dockeritzacio_aplicacions_php [2022/07/13 16:54]
jordi_selga_ruiz
Línia 6: Línia 6:
  
 Per seguir bé aquest article cal tenir coneixements de [[docker|Docker pràctic]] i [[docker-compose|Docker Compose]] i s'ha de tenir instal·lat al sistema [[https://www.docker.com/get-started/|docker]] i [[https://docs.docker.com/compose/install/|docker-compose]] Per seguir bé aquest article cal tenir coneixements de [[docker|Docker pràctic]] i [[docker-compose|Docker Compose]] i s'ha de tenir instal·lat al sistema [[https://www.docker.com/get-started/|docker]] i [[https://docs.docker.com/compose/install/|docker-compose]]
 +
 +===== Referències =====
 +  * Tutorial base d'aquest article: [[http://blog.adnansiddiqi.me/create-your-first-php-mysql-application-in-docker/|Create your first PHP/MySQL application in docker]]
 +  * Documentació de Docker - https://docs.docker.com/
 +
  
 ===== Desplegament d’aplicació en php i mysql ===== ===== Desplegament d’aplicació en php i mysql =====
Línia 64: Línia 69:
   mysql-data:   mysql-data:
 </file> </file>
-Pel que fa al servei de BBDD utilitzem la imatge mysql:8.0 del repositori oficial. Definim un volum amb la directiva // volumes // on enllacem el volum intern de la imatge // /var/lib/mysql // amb el volum de docker definit més endavant.  Definim les variables d'entorn necessàries i definim els ports extern i intern (en aquest cas l'extern es defineix diferent al per defecte per si tenim un servei funcionant en aquest port com en el cas del servei app). +Pel que fa al servei de BBDD utilitzem la imatge mysql:8.0 del repositori oficial. Definim un volum amb la directiva // volumes // on enllacem el directori intern de la imatge // /var/lib/mysql // amb el volum de docker definit més endavant.  Definim les variables d'entorn necessàries i definim els ports extern i intern (en aquest cas l'extern es defineix diferent al per defecte per si tenim un servei funcionant en aquest port com en el cas del servei app). 
-Finalment es defineix un volum intern de docker per assegurar la persistència +Finalment es defineix un volum intern de docker per assegurar la persistència amb // volumes // //mysql-data: // (Aquesta directiva ha d'esta al mateix nivell que // services // i al final del fitxer).
  
 ==== Arrencada dels contenidors ==== ==== Arrencada dels contenidors ====
 +El primer cop hem d'arrencar amb l'argument --build per tal de construir la imatge. Després no caldrà a no ser que fem modificacions a l'aplicació i fos necessari reconstruir la imatge original.
 <code> <code>
 docker-compose up -d --build docker-compose up -d --build
 </code> </code>
 +Comprovem que els dos contenidors estan arrencats amb // docker ps //:
 +<code>
 +docker ps
 +CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS         PORTS                                                  NAMES
 +33cdc1c58ecd   dockerphp_app   "docker-php-entrypoi…"   9 seconds ago    Up 7 seconds   0.0.0.0:82->80/tcp, :::82->80/tcp                      app_php
 +7e2fbd45531d   mysql:8.0       "docker-entrypoint.s…"   10 seconds ago   Up 8 seconds   33060/tcp, 0.0.0.0:8082->3306/tcp, :::8082->3306/tcp   mysql-server-80
 +</code>
 +
 +==== Importar la base de dades ====
 +Per importar una base de dades existent hem de copiar un fitxer sql que contingui l'estructura de la BBDD i executar-lo en el contenidor:
 +
 +<code>
 +docker cp bank.sql mysql-server-80:/bank.sql
 +</code>
 +
 +<code>
 +docker exec -i mysql-server-80 mysql -u root -proot bank < bank.sql
 +</code>
 +En el cas d'exemple tenim algunes dades de prova. Podem observar-ho entrant dins del contenidor del servei i consultant la BBDD:
 +
 +<code>
 +mysql> select * from compte;
 ++----+--------+-------+--------+
 +| id | codi   | saldo | client |
 ++----+--------+-------+--------+
 +|  1 | BK 100 | 15000 |      1 |
 +|  2 | BK 101 |   200 |      1 |
 +|  3 | BK 200 | 18000 |      2 |
 ++----+--------+-------+--------+
 +3 rows in set (0.00 sec)
 +
 +</code>
 +
 +==== Comprovació de funcionament ====
 +Ara podem entrar a l'aplicació mitjançant el navegador (localhost:82) i fer les comprovacions pertinents.
 +Es mostra el llistat dels comptes on s'ha afegit mitjançant l'aplicació un compte nou.
 +{{:captura_de_pantalla_de_2022-07-13_13-25-16.png?400|}}
 +
 +També podem comprovar que si aturem els contenidors i els tornem a arrencar les dades persisteixen gràcies a l'ús de volums.
 +<code>
 +docker-compose down
 +Stopping app_php         ... done
 +Stopping mysql-server-80 ... done
 +Removing app_php         ... done
 +Removing mysql-server-80 ... done
 +Removing network dockerphp_default
 +</code>
 +
 +<code>
 +docker-compose up -d
 +Creating network "dockerphp_default" with the default driver
 +Creating mysql-server-80 ... 
 +Creating mysql-server-80 ... done
 +Creating app_php ... 
 +Creating app_php ... done
 +
 +</code>
 +
 +<code>
 +select * from compte;
 ++----+--------+--------+--------+
 +| id | codi   | saldo  | client |
 ++----+--------+--------+--------+
 +|  1 | BK 100 |  15000 |      1 |
 +|  2 | BK 101 |    200 |      1 |
 +|  3 | BK 200 |  18000 |      2 |
 +|  4 | BK 345 | 123456 |      2 |
 ++----+--------+--------+--------+
 +4 rows in set (0.00 sec)
 +
 +</code>
 +==== REPTE 1 ====
  
 +<WRAP center todo>
 +Fent servir el recurs penjat a: https://github.com/kadnan/DockerPHPTutorial edita el Dockerfile i el docker-compose.yml per poder desplegar amb contenidors docker l'aplicació proporcionada.
 +</WRAP>
  
 +==== REPTE 2 ====
  
 +<WRAP center todo>
 +Dockeritza una aplicació pròpia o bé alguna que trobis en algun repositori amb fent servir de guia els passos indicats.
 +</WRAP>
  
  
  
dockeritzacio_aplicacions_php.txt · Darrera modificació: 2022/07/14 11:31 per jordi_selga_ruiz