MP08 - UF3: Desplegament d'aplicacions web
Infraestructura LAMP amb Docker Compose
Una de les formes de tenir la infraestructura al núvol és tenint dispositius en màquines com ara AWS, Oracle Cloud, etc.
Però una de les eines que ens permet tenir diferents serveis en una màquina és utilitzar contenidors. Docker ens facilita la creació i utilització de contenidors en una màquina Linux. Quan utilitzem Docker, podem instanciar més d'un contenidor i podem fer que aquests es comuniquin entre ells per oferir-se serveis. Però l'eina de Docker que ens facilita la interacció entre diferents contenidors és Docker Compose.
La finalitat d'aquesta pràctica és veure com podem instal·lar docker en un Linux i crear tres serveis, cadascun en un contenidor diferent, que interaccionin entre ells i ens permetin executar aplicacions web que accedeixen a una base de dades relacional. Com a servidor web utilitzarem Apache i com a servidor de base de dades utilitzarem mysql. També posarem un contenidor amb un phpmyadmin.
Començarem per la instal·lació de Docker en un servidor Linux.
Instal·lació de Docker en Linux
Seguirem el tutorial de https://jacar.es/como-instalar-docker-en-ubuntu-22-04/.
Iniciarem la màquina que se'ns ha preparat
i hi accedirem a través de ssh amb la xarxa Wireguard activada.
ssh isard@10.2.18.220
Recordeu que podeu passar -li la vostra clau pública i entrareu sense password
scp .ssh\id_rsa.pub isard@>ssh isard@10.2.18.220:.
I començarem la instal·laació de Docker...
Afegim el repositori de Docker
amb les següents comandes:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Aquesta execució ens diu que la comanda apt-key add
no s'hauria d'utilitzar...
Podeu trobar les comandes a utilitzar, ara no hi entrarem, a la web https://askubuntu.com/questions/1286545/what-commands-exactly-should-replace-the-deprecated-apt-key. Si us hi fixeu ens fan descarregar la clau i desar-la, comprovar que és una clau, exportar-la en un format vàlid i finalment importar-la.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
Instal·lem Docker
sudo apt install -y docker-ce
sudo apt install -y docker-compose
Podem fer la comprovació amb les comandes
docker -v && docker-compose -v
Creació dels contenidors amb Docker Compose
Ara que tenim instal·lat el Docker i el Docker-Compose ja podrem crear els contenidors.
Docker permet crear contenidors que ofereixen serveis a partir de imatges creades per altres o per nosaltres mateixos a partir d'altres imatges. Per generar una imatge solem fer-ho a partir d'un fitxer anomenat Dockerfile
. Si volem tenir diferents serveis en diferents contenidors i que aquests es vegin entre ells, caldrà crear diferents contenidors amb diferents fitxers Dockerfile
, un per cada tipus de contenidor, i iniciar-los tot, d'un en un.
Docker-compose ens permet tenir, en un sol fitxer, docker-compose.yml
, la configuració per a dferents contenidors que interactuaran entre ells. Al tenir-ho en un sol fitxer, tenim relacionats els que interactuen entre ells i al fer l'start
del docker-compose ens iniciarà tots els contenidors alhora.
En aquesta única pràctica, utilitzarem docker-compose i crearem un conjunt de servidors que interactuaran enter ells creant el que anomenem una pila LAMP.
Per a fer aquesta pràctica seguirem el tutorial que podeu trobar a https://openwebinars.net/blog/infraestructura-lamp-con-docker-compose/.
Crearem una infraestructura com la de la imatge següent:
Tindrem tres contenidors:
-
www: serà el servidor web amb l'apache i el php. Es podrà accedir al servidor web pel port 80.
-
db: serà el servidor de bases de dades amb el mysql. Es podrà accedir al servidor de bases de dades pel port 3306.
-
phpmyadmin: serà el servidor web que contindrà el phpmyadmin. Es podrà accedir al servidor web pel port 8000.
En realitat el servidor phpmyadmin funcionarà internament pel port 80 però tindrem mapejat aquest port del contenidor en el port 8000 de la màquina real.
Descarreguem el repositori docker-lamp
del Github i així ja tindrem els fitxers descarregats
En el mateix HOME de l'usuari isard
clonarem el repositori que ens proporcionen amb l comanda
git clone https://github.com/jersonmartinez/docker-lamp.git
Això ens crea la següent estructura de directoris que analitzarem detingudament.
docker-lamp
├── docker-lamp/conf
├── docker-lamp/docker-compose.yml
├── docker-lamp/Dockerfile
├── docker-lamp/dump
│ └── docker-lamp/dump/myDb.sql
├── docker-lamp/LICENSE
├── docker-lamp/README.md
└── docker-lamp/www
└── docker-lamp/www/index.php
Mirarem els fitxers principals i la seva funció.
Dockerfile
Dockerfile | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
EL fitxer Dockerfile
és la base del servidor www.
-
a la línia 1 podem veure que parteix d'una imatge de php amb apache
-
a la línia 3 s'instal·la l'extensió del client mysql per php
-
de la línia 7 a la línia 13 s'instal·len altres llibreries
-
de la línia 14 a la línia 17 s'instal·len mòduls necessaris de php
-
a la línia 19 s'habilita el mòdul rewrite
Analitzant aquest fitxer, podeu, si cal, modificar-lo per tal d'afegir mòduls o configuracions pel que requereixi el vostre servidor web.
docker-compose.yml
docker-compose.yml | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
Aquest fitxer és el que conté la informació dels tres contenidors/serveis que executarem. Podem veure la configuració de cada servidor a partir de les línies que inclouen els services. Línia 3, 18 i 28.
-
El servidor www
-
es crea a partir del fitxer
Dockerfile
que tenim al directori i això d'indica amb la directiva de la línia 19build .
. -
exposa el port 80 i es mapeja al port 80 del servidor. Directiva
ports
-
mapeja el directori del servidor
./www
dins el contenidor en el directori/var/www/html
. Això implica que la nostra pàgina web es troba al directoridocker-lamp/www
. -
tindrà connexió cap el servidor db amb aquest mateix nom. No ens importa la
IP
que ens doni el docker-compose.
-
-
El servidor db
-
es crea a partir de la imatge
mysql
que es trobarà al repositori de Docker. Això d'indica amb la directiva de la línia 4image
. -
exposa el port 3306 i es mapeja al port 3306 del servidor. Directiva
ports
-
mapeja el directori del servidor
./dump
dins el contenidor en el directori/docker-entrypoint-initdb.d
. -
mapeja el directori del servidor
./conf
dins el contenidor en el directori/etc/mysql/conf.d
. -
fa que el directori
/var/lib/mysql
del contenidor es desi en un volum, per tant, no s'eliminarà si aturem i tornem a iniciar el servidor. Aquest volum s'anomenapersistent
i es defineix a la línia 39. -
tindrà connexió cap el servidor db amb aquest mateix nom. No ens importa la
IP
que ens doni el docker-compose. -
utilitza el mètode d'autenticació mysql native password que és més segur que utilitzar usuari i password. Es mostra a la línia 7:
command: --default-authentication-plugin=mysql_native_password
-
a l'iniciar el contenidor, les línies 9 a 11 defineixen una base de dades que es crearà,
dbname
, l'usuari,test
el password,test
.
-
-
El servidor phpmyadmin
-
es crea a partir de la imatge
phpmyadmin/phpmyadmin
que es trobarà al repositori de Docker. Això d'indica amb la directiva de la línia 429image
. -
exposa el port 80 i es mapeja al port 8000 del servidor. Directiva
ports
-
tindrà connexió cap el servidor db amb aquest mateix nom. No ens importa la
IP
que ens doni el docker-compose. -
configura el host, l'usuari i password del phpmyadmin per accedir al servidor, a les línies 35 a 37.
-
Posta en marxa dels servidors
Una vegada tenim la nostra configuració preparada i els fitxer al seu lloc, bàsicament els fitxers de la web al directori www
i l'script de creació de taules de la base de dades al directori dump
ja podem iniciar per primera vegada els servidors.
Per això utilitzarem la comanda
sudo docker-compose up -d
Totes les comandes docker-compose
s'han d'executar des del directori docker-lamp
.
Possible sortida de la comanda
isard@ubuntu:~/docker-lamp$ sudo docker-compose up -d
Creating network "docker-lamp_default" with the default driver
Creating volume "docker-lamp_persistent" with default driver
Pulling db (mysql:)...
latest: Pulling from library/mysql
bce031bc522d: Pull complete
cf7e9f463619: Pull complete
105f403783c7: Pull complete
878e53a613d8: Pull complete
2a362044e79f: Pull complete
6e4df4f73cfe: Pull complete
69263d634755: Pull complete
fe5e85549202: Pull complete
5c02229ce6f1: Pull complete
7320aa32bf42: Pull complete
Digest: sha256:4ef30b2c11a3366d7bb9ad95c70c0782ae435df52d046553ed931621ea36ffa5
Status: Downloaded newer image for mysql:latest
Building www
[+] Building 136.5s (11/11) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 611B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/php:8.0.0-apache 1.5s
=> [1/7] FROM docker.io/library/php:8.0.0-apache@sha256:d99955a6e712060827a9abd5f82c4218b82263e3a1ad609916efbca9 5.7s
=> => resolve docker.io/library/php:8.0.0-apache@sha256:d99955a6e712060827a9abd5f82c4218b82263e3a1ad609916efbca9 0.0s
=> => sha256:e97a1581dd7502f3108ff5460c5b7e4cabfe9ca1270d7ad31953a0ced7ec537e 12.91kB / 12.91kB 0.0s
=> => sha256:db606474d60ce31604505c7d6dad9a66cb42f3818fca738832db2f2091cf89c9 225B / 225B 0.2s
=> => sha256:afb30f0cd8e0ff78b5eecdc2d9365a50441ad83c5db5f1e87942d6426237fa56 76.65MB / 76.65MB 1.0s
=> => sha256:d99955a6e712060827a9abd5f82c4218b82263e3a1ad609916efbca98b9fe768 1.86kB / 1.86kB 0.0s
=> => sha256:6ec7b7d162b24bd6df88abde89ceb6d7bbc2be927f025c9dd061af2b0c328cfe 27.10MB / 27.10MB 0.4s
=> => sha256:969206c3c9252899282deede1a4f9c34827944db3a388f708e93f504f7611194 3.04kB / 3.04kB 0.0s
=> => sha256:3bb2e805159413e5278b859f7fbb86ddfc99e667cb705d5d5aec0a7c8ffcf1b5 225B / 225B 0.3s
=> => sha256:4c761b44e2ccbff3f10b254b21bb00a52dfd26919ad9e3f7efcd569196e6c26b 18.68MB / 18.68MB 0.6s
=> => extracting sha256:6ec7b7d162b24bd6df88abde89ceb6d7bbc2be927f025c9dd061af2b0c328cfe 1.4s
=> => sha256:c2199db96575122fd559c29b619a2773fe9069e0266312a6369ac95f4464b1dd 434B / 434B 0.5s
=> => sha256:1b9a9381eea8f93068e8043f18ea59b709c07256e2f90962931a1433fbdf5e79 487B / 487B 0.7s
=> => sha256:3ca35111d640542cd6168619946a2d5c6c8c51aa2a127377d0454493088d4b90 11.06MB / 11.06MB 1.6s
=> => sha256:e867c987304f3016276fa8490597fe9ecc75ea69b2382395d6f6454ab6d82fa8 493B / 493B 1.4s
=> => sha256:b9389431ee45f8437f11bb465a30734c61c286e5fb1af3f3a4bf551a34d165d6 14.46MB / 14.46MB 1.4s
=> => sha256:b3c527b355d636fb0c682be9b41700fe4dbffdaaedfe364ef57fb491800a92cf 2.27kB / 2.27kB 1.7s
=> => sha256:673f280b653bb3e36609bc510f658fb1b07b6cf7c0a2bf5ee53f79e64d9d99eb 247B / 247B 1.7s
=> => sha256:c3514500cfc58d1c9daaa70220a4255e25d539eba86d50d5afdc007b979d7bba 894B / 894B 1.8s
=> => extracting sha256:db606474d60ce31604505c7d6dad9a66cb42f3818fca738832db2f2091cf89c9 0.0s
=> => extracting sha256:afb30f0cd8e0ff78b5eecdc2d9365a50441ad83c5db5f1e87942d6426237fa56 2.4s
=> => extracting sha256:3bb2e805159413e5278b859f7fbb86ddfc99e667cb705d5d5aec0a7c8ffcf1b5 0.0s
=> => extracting sha256:4c761b44e2ccbff3f10b254b21bb00a52dfd26919ad9e3f7efcd569196e6c26b 0.4s
=> => extracting sha256:c2199db96575122fd559c29b619a2773fe9069e0266312a6369ac95f4464b1dd 0.0s
=> => extracting sha256:1b9a9381eea8f93068e8043f18ea59b709c07256e2f90962931a1433fbdf5e79 0.0s
=> => extracting sha256:3ca35111d640542cd6168619946a2d5c6c8c51aa2a127377d0454493088d4b90 0.1s
=> => extracting sha256:e867c987304f3016276fa8490597fe9ecc75ea69b2382395d6f6454ab6d82fa8 0.0s
=> => extracting sha256:b9389431ee45f8437f11bb465a30734c61c286e5fb1af3f3a4bf551a34d165d6 0.5s
=> => extracting sha256:b3c527b355d636fb0c682be9b41700fe4dbffdaaedfe364ef57fb491800a92cf 0.0s
=> => extracting sha256:673f280b653bb3e36609bc510f658fb1b07b6cf7c0a2bf5ee53f79e64d9d99eb 0.0s
=> => extracting sha256:c3514500cfc58d1c9daaa70220a4255e25d539eba86d50d5afdc007b979d7bba 0.0s
=> [2/7] RUN docker-php-ext-install mysqli 8.7s
=> [3/7] RUN apt-get update && apt-get install -y sendmail libpng-dev && apt-get install -y libzip-dev 73.6s
=> [4/7] RUN docker-php-ext-install mbstring 25.2s
=> [5/7] RUN docker-php-ext-install zip 6.0s
=> [6/7] RUN docker-php-ext-install gd 14.6s
=> [7/7] RUN a2enmod rewrite 0.7s
=> exporting to image 0.1s
=> => exporting layers 0.1s
=> => writing image sha256:2b3829254173bf99f40b40e331552729fdc27c2687ec2d7fba37560c7642465b 0.0s
=> => naming to docker.io/library/docker-lamp_www 0.0s
WARNING: Image for service www was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Pulling phpmyadmin (phpmyadmin/phpmyadmin:)...
latest: Pulling from phpmyadmin/phpmyadmin
faef57eae888: Pull complete
989a1d6c052e: Pull complete
0705c9c2f22d: Pull complete
621478e043ce: Pull complete
98246dcca987: Pull complete
bfed8c155cb6: Pull complete
7a7c2e908867: Pull complete
d176994b625c: Pull complete
2d8ace6a2716: Pull complete
c70df516383c: Pull complete
15e1b44fe4c7: Pull complete
65e50d44e95a: Pull complete
77f68910bc0a: Pull complete
605dd3a6e332: Pull complete
99ce27188f07: Pull complete
74d64e32c5d5: Pull complete
ef5fc9928b9f: Pull complete
163f3256e112: Pull complete
Digest: sha256:67ba2550fd004399ab0b95b64021a88ea544011e566a9a1995180a3decb6410d
Status: Downloaded newer image for phpmyadmin/phpmyadmin:latest
Creating docker-lamp_db_1 ... done
Creating docker-lamp_phpmyadmin_1 ... done
Creating docker-lamp_www_1 ... done
isard@ubuntu:~/docker-lamp$
La primera vegada que executem aquesta comanda, es descarregaran les imatges d'internet, s'executaran els scripts RUN
del fitxer Dockerfile
i s'executaran els scripts de creació de bases de dades, uuaris i taules al servidor de base de dades.
Una vegada finalitzat el procés tindrem iniciats els tres contenidors que podrem observar amb la comanda
sudo docker-compose ps
isard@ubuntu:~/docker-lamp$ sudo docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------
docker-lamp_db_1 docker-entrypoint.sh --def ... Up 0.0.0.0:3306->3306/tcp, 33060/tcp
docker-lamp_phpmyadmin_1 /docker-entrypoint.sh apac ... Up 0.0.0.0:8000->80/tcp
docker-lamp_www_1 docker-php-entrypoint apac ... Up 0.0.0.0:80->80/tcp
o bé
sudo docker ps
isard@ubuntu:~/docker-lamp$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc460907b63b docker-lamp_www "docker-php-entrypoi…" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp docker-lamp_www_1
ee6343184b41 phpmyadmin/phpmyadmin "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 0.0.0.0:8000->80/tcp docker-lamp_phpmyadmin_1
c2f8dc70f72b mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp docker-lamp_db_1
isard@ubuntu:~/docker-lamp$
Aquí podem veure els servidors iniciats amb la imatge que utilitzen i els ports que estan exposant.
Per tant, podrem :
-
accedir a la web, a partir de la IP del servidor a http://ipdelservidor/
-
accedir al phpmyadmin, a partir de la IP del servidor però pel port 8000 a http://ipdelservidor:8000/. Usuari:
root
i password:test
.
Funciona? Com s'inicien els serveis i com s'ha creat la base de dades i les taules?
Per això cal mirar i saber bàsicament com treballen les imatges de docker. Les imatges de Docker estan en el hub de Docker, accessible a https://hub.docker.com/, però cal estar registrat.
-
El servidor www es crea a partir del fitxer
Dockerfile
on es defineix, a la línia 1 l'ús de la imatgephp:8.0.0-apache
que trobem a https://hub.docker.com/layers/library/php/8.0.0-apache/images/sha256-0445e078ac3160ab0ed76553498706b54cd0c03afd8be5f296d1b1a080ebce54?context=explore -
El servidor db utilitza la imatge
mysql
que trobem a https://hub.docker.com/_/mysql on ens parla de les diferents variables d'entorn que podem utilitzar:MYSQL_ROOT_PASSWORD
,MYSQL_DATABASE
,MYSQL_USER
,MYSQL_PASSWORD
,MYSQL_ALLOW_EMPTY_PASSWORD
,MYSQL_RANDOM_ROOT_PASSWORD
,MYSQL_ONETIME_PASSWORD
,MYSQL_INITDB_SKIP_TZINFO
.Una vegada hem executat el docker-compose, i se'ns ha descarregat la imatge, podem veure les opcions possibles executant la comanda
sudo docker run -it --rm mysql:latest --verbose --help
Per saber les imatges descarregades cal executarsudo docker images
Possible sortidaREPOSITORY TAG IMAGE ID CREATED SIZE docker-lamp_www latest cd7ff15979e6 21 minutes ago 425MB mysql latest bc861cf238f2 4 weeks ago 619MB phpmyadmin/phpmyadmin latest 933569f3a9f6 6 months ago 562MB
-
El servidor phpmyadmin utilitza la imatge
phpmyadmin/phpmyadmin
que trobem a https://hub.docker.com/r/phpmyadmin/phpmyadmin on ens indica:-
Credentials
phpMyAdmin connects using your MySQL server credentials. Please check your corresponding database server image for information on the default username and password or how to specify your own custom credentials during installation.
The official MySQL and MariaDB images use the following environment variables to define these:
MYSQL_ROOT_PASSWORD
- This variable is mandatory and specifies the password that will be set for the root superuser account.MYSQL_USER
,MYSQL_PASSWORD
- These variables are optional, used in conjunction to create a new user and to set that user's password.
-
Cada servidor inicia sempre el seu servei i en el moment de la creació executa els fitxers de configuració.
Sembla ser que el de mysql
carrega el fitxer .sql que es troba al seu directori, /docker-entrypoint-initdb.d
, que per nosaltres és el directori dump
, on hi ha el fitxer myDB.sql
amb un script sql de creació de taules i inserts. Una taula i 4 registres, però, podria ser més complexe.
Aturada dels contenidors
Per aturar els contenidors podem utilitzar la comanda
sudo docker-compose stop
isard@ubuntu:~/docker-lamp$ sudo docker-compose stop
Stopping docker-lamp_www_1 ... done
Stopping docker-lamp_phpmyadmin_1 ... done
Stopping docker-lamp_db_1 ... done
Ara, si intentem accedir als servidors veurem que aquests no contesten.
i podem veure que tenim els servidors aturats amb la comanda
sudo docker-compose ps
isard@ubuntu:~/docker-lamp$ sudo docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------
docker-lamp_db_1 docker-entrypoint.sh --def ... Exit 0
docker-lamp_phpmyadmin_1 /docker-entrypoint.sh apac ... Exit 0
docker-lamp_www_1 docker-php-entrypoint apac ... Exit 0
Tornem a iniciar els contenidors
Per tornar a iniciar els contenidors utilitzarem la comanda
sudo docker-compose start
Compte...
ja que per crear-los i iniciar-los la primera vegada hem utilitzat el paràmetre up
i per iniciar els que tenim aturats utilitzarem el paràmetre start
.
Utilitzeu la comanda
docker-compose --help
per veure més opcions.
Aquesta vegada ha trigat moltíssim menys.
Puc accedir a aquests contenidors d'alguna forma?
Sí, al final, docker-compose és una eina que permet executar i configurar diferents contenidors Docker en un sol fitxer; però cadascun dels contenidors és igualment accessible tal i com podem fer-ho amb comandes Docker-compose o amb comandes Docker. Anem a veure'n alguna:
Executem una comanda sense entrar al contenidor
Podem executar comandes del servidor, com si estiguéssim dins amb la comanda
docker-compose exec <servei> <comanda>
sudo docker-compose exec www pwd
Amb les comandes de Docker podem executar comandes interactives, per exemple obrir una shell o el client mysql. Per això podem especificar la opció -ti
(interactiu)
docker exec <contenidor> -ti <comanda_interactiva>
Per referenciar el contenidor
podem utilitzar el CONTAINER ID
o bé el NAME
que obtenim amb la comanda docker ps
.
sudo docker exec -ti docker-lamp_www_1 /bin/bash
isard@ubuntu:~/docker-lamp$ sudo docker exec -ti docker-lamp_www_1 /bin/bash
root@dc460907b63b:/var/www/html# pwd
/var/www/html
root@dc460907b63b:/var/www/html# exit
exit
Fixeu-vos com ha canviat el PROMPT i ens indica el servidor al que estem dc460907b63b
sudo docker exec -ti docker-lamp_db_1 mysql -u root -ptest
sudo docker exec -ti docker-lamp_phpmyadmin_1 /bin/bash
Les imatges dels contenidors Docker solen tenir el mínim software instal·lat i per tant algunes comandes poden no funcionar.
Aturem el contenidor phpmyadmin
Per aturar un sol contenidor podem utilitzar comandes de Docker.
sudo docker stop docker-lamp_phpmyadmin_1
i mirem com estem ...
sudo docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------
docker-lamp_db_1 docker-entrypoint.sh --def ... Up 0.0.0.0:3306->3306/tcp, 33060/tcp
docker-lamp_phpmyadmin_1 /docker-entrypoint.sh apac ... Exit 0
docker-lamp_www_1 docker-php-entrypoint apac ... Up 0.0.0.0:80->80/tcp
Per tornar a iniciar-lo amb comandes de Docker.
sudo docker star docker-lamp_phpmyadmin_1
i mirem com estem ...
sudo docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------
docker-lamp_db_1 docker-entrypoint.sh --def ... Up 0.0.0.0:3306->3306/tcp, 33060/tcp
docker-lamp_phpmyadmin_1 /docker-entrypoint.sh apac ... Up 0.0.0.0:8000->80/tcp
docker-lamp_www_1 docker-php-entrypoint apac ... Up 0.0.0.0:80->80/tcp
Altres
Si modifiqueu els fitxers del directori www
veureu els canvis immediatament a la web. Aquest directori està compartit entre el servidor i el contenidor. Així podem treballar sense instal·lacions complicades.
Caldria aprendre més sobre Docker i Docker-compose per tal de muntar serveis i servidors, de qualsevol cosa, en un moment. Només cal trobar la imatge adequada. Segurament en trobarem alguna de VueJS, etc. Només cal saber on posar els fitxers i les opcions de configuració.
Totes les comandes docker-compose
s'han d'executar des del directori docker-lamp
.