Pr. Creació i desplegament d'un contenidor amb Docker
Referència
Concretament:
La creació i el desplegament d'un docker està explicat en l'apartat:
- 1.1.3: Creació i desplegament d'un contenidor amb Docker
Creació del docker
NOTA: L'explicació que ve a continuació és seguir fil per randa els apunts de la IOC. S'ha provat en una màquina Linux, i també en una màquina Windows.
Dins del directori de treball, creem la carpeta docker/, i a dins la carpeta src/.
<?php echo "hola món"; ?> Anem a dockeritzar aquest script, en el context d'una aplicació web que funciona dins d'un servidor web Apache. Cerquem a Google el ''docker oficial de PHP'' *https://hub.docker.com/_/php?tab=tags Agafem un tag que contingui apache, per exemple: 7.4-apache (podem utilitzar el cercador de ''tags''). Si volguéssim descarregar aquest docker faríem senzillament: <pre> $ docker pull php:7.4-apache
I ja tindríem un Apache amb funcionalitat PHP.
Però anem a configurar el nostre docker. Per fer-ho, creem el fitxer de configuració Dockerfile (compte usuaris de Windows, aquest fitxer no té extensió). És un fitxer de text (sense extensió), que l'obrim amb qualsevol editor bàsic. Conté tan sols 3 línies:
FROM php:7.4-apache COPY src/ /var/www/html EXPOSE 80
La comanda COPY és perquè volem copiar el contingut del nostre directori local src/ a dins de la carpeta /var/www/html, que ja saps que és el directori per defecte de l'Apache per publicar pàgines.
Ja podem muntar el docker:
$ docker build -t hola-mon . $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE hola-mon latest 5b2cebdbd18f 5 minutes ago 469MB php 7.4-apache 4d3d9fe4d89c 8 days ago 469MB
Fixem-nos bé que no hem hagut d'instal·lar cap Linux ni Apache ni PHP. Tota aquesta funcionalitat ja ens ve de la imatge de la qual hem partit (php:7.4-apache).
I ara podem arrencar:
docker run -p 8080:80 hola-mon http://localhost:8080/ Forbidden http://localhost:8080/hola_mon.php
sí que funciona
El professor ha fet servir el 8080 perquè el port 80 el té ocupat per un Apache local. Tú també hauràs de tenir present si tens el XAMP funcionant o no, per veure si hi ha algun servei que estigui ocupant el port 80.
Per aturar el docker n'hi ha prou a fer Ctrl-C o Ctrl-D en la consola per tal d'aturar el procés. NOTA: en cas de què vulguis esborrar una imatge docker has de fer:
$ docker rmi -f 5b2cebdbd18f
És molt útil mapejar la teva carpeta local amb la carpeta del docker, amb l'opció -v:
$ docker run -p 8080:80 -v /home/joan/DAW_M08_DESPL/UF3/docker/src/:/var/www/html/ hola-mon
I aleshores podem modificar el script hola_mon.php, i automàticament quan refresquem el navegador veiem els canvis que hem realitzat.
NOTA usuaris Windows. Per mapejar amb Windows la idea és la mateixa (però recorda que és una mala idea utilitzar directoris amb espais en blanc):
$ docker run -p 8080:80 -v C:\users\joan\docker\:/var/www/html/ hola-mon
Pujar el docker a dockerhub
r$ docker login Authenticating with existing credentials... ... Login Succeeded El següent pas és etiquetar la imatge per pujar-la al repositori. $ docker tag 2f67228e9e34 joanillo/hola-mon:latest $ docker image ls o bé $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE joanillo/hola-mon latest 2f67228e9e34 About a minute ago 469MB hola-mon latest 2f67228e9e34 About a minute ago 469MB docker push joanillo/hola-mon:latest I ara podem anar al dockerhub i veure que el docker publicat i públic. https://hub.docker.com/ === ara eliminem el nostre docker docker rmi -f 2f67228e9e34 docker pull joanillo/hola-mon $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE joanillo/hola-mon latest 2f67228e9e34 21 minutes ago 469MB docker run -p 8080:80 joanillo/hola-mon docker run -p 8080:80 -v /home/joan/DAW_M08_DESPL/UF3/docker/src/:/var/www/html/ joanillo/hola-mon
Desplegament del docker
creat per Joan Quintana Compte, febrer 2022