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 Següent revisió Ambdós costats nova versio | ||
dockeritzacio_aplicacions_php [2022/07/12 17:43] jordi_selga_ruiz |
dockeritzacio_aplicacions_php [2022/07/14 10:57] jordi_selga_ruiz |
||
---|---|---|---|
Línia 1: | Línia 1: | ||
====== Dockerització d' | ====== Dockerització d' | ||
- | {{tag> #FpInfor #Ciber #CiberMp03 #Ceti #php #mysql #docker #Laravel}} | + | {{tag> #FpInfor #Ciber #CiberMp03 #Ceti #php #mysql # |
===== Requeriments previs ===== | ===== Requeriments previs ===== | ||
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:// | 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:// | ||
+ | |||
+ | ===== Referències ===== | ||
+ | * Tutorial base d' | ||
+ | * Documentació de Docker - https:// | ||
+ | |||
===== Desplegament d’aplicació en php i mysql ===== | ===== Desplegament d’aplicació en php i mysql ===== | ||
Línia 11: | Línia 16: | ||
==== Preparació d' | ==== Preparació d' | ||
+ | Per aquest exemple necessitem dues imatges, una per l' | ||
+ | === Aplicació PHP === | ||
+ | |||
+ | Per l' | ||
+ | |||
< | < | ||
FROM php: | FROM php: | ||
Línia 18: | Línia 28: | ||
EXPOSE 80 | EXPOSE 80 | ||
</ | </ | ||
- | <file yaml docker-compose.yml [enable_line_numbers=" | + | En aquest exemple s'ha optat per la versió 7.4 de php i s'ha afegit a la imatge extensions com [[https:// |
+ | === BBDD MySQL === | ||
+ | Per la part de la BBDD s'ha optat per una [[https:// | ||
+ | ==== Configuració del fitxer docker-compose ==== | ||
+ | D'una banda tenim definida l' | ||
+ | En la directiva ports trobem definit extern: | ||
+ | La directiva // | ||
+ | |||
+ | <file yaml docker-compose.yml [enable_line_numbers=" | ||
+ | |||
+ | version: ' | ||
+ | services: | ||
+ | app: | ||
+ | container_name: | ||
+ | build: | ||
+ | context: ./ | ||
+ | ports: | ||
+ | - 82:80 | ||
+ | environment: | ||
+ | MYSQL_HOST: mysql | ||
+ | MYSQL_USER: root | ||
+ | MYSQL_PASSWORD: | ||
+ | MYSQL_DATABASE: | ||
+ | depends_on: | ||
+ | - mysql | ||
+ | mysql: | ||
+ | image: mysql:8.0 | ||
+ | container_name: | ||
+ | volumes: | ||
+ | - mysql-data:/ | ||
+ | restart: always | ||
+ | environment: | ||
+ | MYSQL_ROOT_PASSWORD: | ||
+ | MYSQL_DATABASE: | ||
+ | ports: | ||
+ | - " | ||
+ | volumes: | ||
+ | mysql-data: | ||
</ | </ | ||
+ | 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 // / | ||
+ | Finalment es defineix un volum intern de docker per assegurar la persistència amb // volumes // // | ||
+ | |||
+ | ==== Arrencada dels contenidors ==== | ||
+ | El primer cop hem d' | ||
+ | < | ||
+ | docker-compose up -d --build | ||
+ | </ | ||
+ | Comprovem que els dos contenidors estan arrencats amb // docker ps //: | ||
+ | < | ||
+ | docker ps | ||
+ | CONTAINER ID | ||
+ | 33cdc1c58ecd | ||
+ | 7e2fbd45531d | ||
+ | </ | ||
+ | |||
+ | ==== Importar la base de dades ==== | ||
+ | Per importar una base de dades existent hem de copiar un fitxer sql que contingui l' | ||
+ | |||
+ | < | ||
+ | docker cp bank.sql mysql-server-80:/ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | docker exec -i mysql-server-80 mysql -u root -proot bank < bank.sql | ||
+ | </ | ||
+ | En el cas d' | ||
+ | |||
+ | < | ||
+ | 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) | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Comprovació de funcionament ==== | ||
+ | Ara podem entrar a l' | ||
+ | Es mostra el llistat dels comptes on s'ha afegit mitjançant l' | ||
+ | {{: | ||
+ | |||
+ | També podem comprovar que si aturem els contenidors i els tornem a arrencar les dades persisteixen gràcies a l'ús de volums. | ||
+ | < | ||
+ | docker-compose down | ||
+ | Stopping app_php | ||
+ | Stopping mysql-server-80 ... done | ||
+ | Removing app_php | ||
+ | Removing mysql-server-80 ... done | ||
+ | Removing network dockerphp_default | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | docker-compose up -d | ||
+ | Creating network " | ||
+ | Creating mysql-server-80 ... | ||
+ | Creating mysql-server-80 ... done | ||
+ | Creating app_php ... | ||
+ | Creating app_php ... done | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | 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) | ||
+ | |||
+ | </ | ||
+ | ==== REPTE 1 ==== | ||
+ | |||
+ | <WRAP center todo> | ||
+ | Fent servir el recurs penjat a: https:// | ||
+ | </ | ||
+ | |||
+ | ==== REPTE 2 ==== | ||
+ | |||
+ | <WRAP center todo> | ||
+ | Dockeritza una aplicació pròpia o bé alguna que trobis en algun repositori fent servir de guia els passos indicats anteriorment. Comprova que la pots fer funcionar al la tema màquina local | ||
+ | Exeples d' | ||
+ | * https:// | ||
+ | * https:// | ||
+ | </ | ||
+ | |||
+ | ===== Dockerització d' | ||
+ | |||
+ | Si ja estem enfocats a Docker i habituat una possibilitat és que ja desenvolupem els nostres projectes directament amb un framework muntat sobre docker com per exemple de la forma que es descriu en l' | ||
+ | |||
+ | ==== Symfony ==== | ||
+ | |||
+ | S'ha de procedir igual que s'ha fet amb l' | ||
+ | Cal tenir en compte dues coses importants: | ||
+ | * S'ha d' | ||
+ | * La variable d' | ||
+ | ==== Laravel ==== | ||
+ | De la mateixa manera podem dockeritzar una aplicació feta amb Laravel | ||
+ | Cal tenir en compte dues coses importants: | ||
+ | * S'ha d' | ||
+ | * Les variables d' | ||
+ | * - DB_HOST | ||
+ | * - DB_PORT | ||
+ | * - DB_DATABASE | ||
+ | * - DB_USERNAME | ||
+ | * - DB_PASSWORD | ||