Diferència entre revisions de la pàgina «WordPress amb Compose. Curs 2025-2026»

De binefa.com
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «= Contenidor amb MariaDB = jordi@asix2:~$ '''docker run -d --name wordpress-db \''' '''--mount source=wordpress-db,target=/var/lib/mysql \''' '''-e MYSQL_ROOT...».)
 
m
 
Línia 1: Línia 1:
= Contenidor amb MariaDB =
+
= Abans de començar =
jordi@asix2:~$ '''docker run -d --name wordpress-db \'''
+
Amb les pràctiques que hem anant fent:
    '''--mount source=wordpress-db,target=/var/lib/mysql \'''
 
    '''-e MYSQL_ROOT_PASSWORD=secret \'''
 
    '''-e MYSQL_DATABASE=wordpress \'''
 
    '''-e MYSQL_USER=manager \'''
 
    '''-e MYSQL_PASSWORD=secret mariadb:10'''
 
jordi@asix2:~$ '''docker ps'''
 
CONTAINER ID  IMAGE                          COMMAND                  CREATED          STATUS          PORTS                                    NAMES
 
13b7b9fa734a  mariadb:10                    "docker-entrypoint.s…"  39 seconds ago  Up 37 seconds  3306/tcp                                  wordpress-db
 
  
El paràmetre '''--mount''' ens permet enllaçar el volum que creem al pas anterior amb el directori '''/var/lib/mysql''' del contenidor. Aquest directori és on es guarden les dades de MariaDB. Això significa que si esborrem el contenidor, o actualitzem el contenidor a una nova versió, no perdrem les dades perquè ja no es troben en ell, ans al volum. Només ho perdríem si esborrem explícitament el volum.
+
A [[Exemple de docker amb nginx, PHP i MariaDB]] hem fet servir el port 8080 per al PhpMyAdmin
  
El paràmetre '''--mount''' es va començar a utilitzar des de la versió 17.06 per a contenidors independents (els que no pertanyen a un eixam o ''swarm''). Els que coneguin Docker de versions més antigues estaran més acostumats a usar el paràmetre '''--volume''' que fa una cosa similar. No obstant això la documentació aconsella usar ja '''--mount''', sobretot per a nous usuaris.
+
A [[WordPress amb docker. Curs 2025-2026]] hem fet servir el port 8081 per a no col·lisionar amb el port del PhpMyAdmin de l'exemple anterior.
  
= Creació del blog =
+
A l'exemple actual farem servir el port 8082. Però si no ens cal l'exemple anterior podem esborrar els contenidors fets a l'exercici anterior. Es faria així:
Creació dels directoris:
+
  docker container stop wordpress wordpress-db
jordi@asix2:~$ '''mkdir -p ~/Sites/wordpress/target && cd ~/Sites/wordpress'''
+
docker container rm wordpress wordpress-db
Posada en marxa del contenidor visualitzant WordPress pel port '''''8081''''':
+
docker volume rm wordpress-db
  jordi@asix2:~/Sites/wordpress$ '''docker run -d --name wordpress \''
+
= Docker Compose =
    '''--link wordpress-db:mysql \'''
+
''Compose''' és una eina per a definir i executar aplicacions multi-contenidor. Amb una sola ordre podrem crear i iniciar tots els serveis que necessitem per a la nostra aplicació.
    '''--mount type=bind,source="$(pwd)"/target,target=/var/www/html \'''
 
    '''-e WORDPRESS_DB_USER=manager \'''
 
    '''-e WORDPRESS_DB_PASSWORD=secret \'''
 
    '''-p ''8081'':80 \'''
 
    '''wordpress:6'''
 
Hi podeu accedir mijançant http://localhost:8081
 
  
[[Image:WP01_2024.png|center|thumb|Primera entrada a WordPress]]
+
Els casos d'ús més habituals per a docker compose són:
 +
 
 +
* Entorns de desenvolupament
 +
* Entorns de testatge automàtics (integració contínua)
 +
* Desplegament en host individuals (no clústers)
 +
 
 +
''Compose'' té ordres per a manejar tot el cicle de vida de la nostra aplicació:
 +
 
 +
* Iniciar, detenir i refer serveis.
 +
* Veure l'estat dels serveis.
 +
* Visualitzar els logs.
 +
* Executar una ordre a un servei.
 +
= Creació automatitzada de contenidors =
 +
Al mateix directori on estàvem al pas anterior (''~/Sites/wordpress''), crearem un fitxer anomenat docker-compose.yaml amb el següent contingut:
 +
== docker-compose.yaml ==
 +
jordi@asix2:~/Sites/wordpress$ nano docker-compose.yaml
 +
 
 +
services:
 +
    db:
 +
        image: '''mariadb:10'''
 +
        volumes:
 +
            - data:/var/lib/mysql
 +
        environment:
 +
            - MYSQL_ROOT_PASSWORD=secret
 +
            - MYSQL_DATABASE=wordpress
 +
            - MYSQL_USER=manager
 +
            - MYSQL_PASSWORD=secret
 +
    web:
 +
        image: '''wordpress:6'''
 +
        depends_on:
 +
            - db
 +
        volumes:
 +
            - ./target:/var/www/html
 +
        environment:
 +
            - WORDPRESS_DB_USER=manager
 +
            - WORDPRESS_DB_PASSWORD=secret
 +
            - WORDPRESS_DB_HOST=db
 +
            - WORDPRESS_DB_NAME=wordpress
 +
        ports:
 +
            - '''''8082''''':80
 +
 +
volumes:
 +
    data:
 +
Els fitxers de ''Compose'' estan dividits en tres seccions: ''services'', ''volumes'' i ''networks''; i han d'indicar un número de versió. Ens permet realitzar practicamente el mateix que podem fer amb el client de docker, però de manera automàtica. A aquest exemple no fem servir ''networks''.
 +
 
 +
= En marxa =
 +
jordi@asix2:~/Sites/wordpress$ '''docker compose up -d'''
 +
Hi podeu accedir anant a http://localhost:8082
 +
 
 +
Algunes ordres interessants:
 +
* Aturada del servei: ''docker compose stop''
 +
* Esborrar serveis: ''docker compose down''
 +
* Esborrar serveis i volums: ''docker compose down -v''
  
 
= Font =
 
= Font =
[https://aulasoftwarelibre.github.io/taller-de-docker/wordpress/ Levantar un WordPress con Docker]
+
[https://aulasoftwarelibre.github.io/taller-de-docker/docker-compose/ Levantar un WordPress con Compose]

Revisió de 15:19, 27 gen 2026

Abans de començar

Amb les pràctiques que hem anant fent:

A Exemple de docker amb nginx, PHP i MariaDB hem fet servir el port 8080 per al PhpMyAdmin

A WordPress amb docker. Curs 2025-2026 hem fet servir el port 8081 per a no col·lisionar amb el port del PhpMyAdmin de l'exemple anterior.

A l'exemple actual farem servir el port 8082. Però si no ens cal l'exemple anterior podem esborrar els contenidors fets a l'exercici anterior. Es faria així:

docker container stop wordpress wordpress-db
docker container rm wordpress wordpress-db
docker volume rm wordpress-db

Docker Compose

Compose' és una eina per a definir i executar aplicacions multi-contenidor. Amb una sola ordre podrem crear i iniciar tots els serveis que necessitem per a la nostra aplicació.

Els casos d'ús més habituals per a docker compose són:

  • Entorns de desenvolupament
  • Entorns de testatge automàtics (integració contínua)
  • Desplegament en host individuals (no clústers)

Compose té ordres per a manejar tot el cicle de vida de la nostra aplicació:

  • Iniciar, detenir i refer serveis.
  • Veure l'estat dels serveis.
  • Visualitzar els logs.
  • Executar una ordre a un servei.

Creació automatitzada de contenidors

Al mateix directori on estàvem al pas anterior (~/Sites/wordpress), crearem un fitxer anomenat docker-compose.yaml amb el següent contingut:

docker-compose.yaml

jordi@asix2:~/Sites/wordpress$ nano docker-compose.yaml
services:
   db:
       image: mariadb:10
       volumes:
           - data:/var/lib/mysql
       environment:
           - MYSQL_ROOT_PASSWORD=secret
           - MYSQL_DATABASE=wordpress
           - MYSQL_USER=manager
           - MYSQL_PASSWORD=secret
   web:
       image: wordpress:6
       depends_on:
           - db
       volumes:
           - ./target:/var/www/html
       environment:
           - WORDPRESS_DB_USER=manager
           - WORDPRESS_DB_PASSWORD=secret
           - WORDPRESS_DB_HOST=db
           - WORDPRESS_DB_NAME=wordpress
       ports:
           - 8082:80

volumes:
   data:

Els fitxers de Compose estan dividits en tres seccions: services, volumes i networks; i han d'indicar un número de versió. Ens permet realitzar practicamente el mateix que podem fer amb el client de docker, però de manera automàtica. A aquest exemple no fem servir networks.

En marxa

jordi@asix2:~/Sites/wordpress$ docker compose up -d

Hi podeu accedir anant a http://localhost:8082

Algunes ordres interessants:

  • Aturada del servei: docker compose stop
  • Esborrar serveis: docker compose down
  • Esborrar serveis i volums: docker compose down -v

Font

Levantar un WordPress con Compose