
Resumen
Aquí traigo los comandos y las notas referentes al capítulo de ayer sobre docker y las correcciones necesarias.
Otra nota.
Es posible que este artículo crezca con el paso del tiempo, como acabo de hacer
Lo primero. Todos los comandos están adaptados a mi entorno. Eso quiere decir que una ruta o un puerto puede variar, y de hecho, debe variar, en instalaciones propias con datos propios de cada usuario.
Primer contenedor. BBDD
Partiendo de una imagen base de Linuxserver, podemos trabajar con el siguiente código:
docker run -d \
--name=mariadb \
-e PUID=1000 \
-e PGID=1000 \
-e MYSQL_ROOT_PASSWORD=Password.2021 \
-e TZ=Europe/Madrid \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=wordpress.2021 \
-p 3306:3306 \
-v /home/usuario/wp_database:/config \
--restart unless-stopped \
linuxserver/mariadb
Este comando es correcto y está probado. Cambio el $ por . por evitar problemas.
Hay que tener bastante cuidado con las variables de entorno.
Y con eso tenemos una ocupación de 236 MB.
Segundo contenedor. PHPMyAdmin
También con una imagen base de Linuxserver.
docker run -d \
--name=phpmyadmin \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/Madrid \
-e PMA_ARBITRARY=1 \
-p 1180:80 \
-p 11443:443 \
-v /home/usuario/wp_pma:/config \
--restart unless-stopped \
linuxserver/phpmyadmin
Seguimos creciendo en ocupación. 336 MB en este punto.
Tercer contenedor. Wordpress
Esta vez desde el propio Wordpress podemos desplegar. He hecho referencia al primero de los contenedores que hemos creado.
docker run -d \
--name=wordpress \
-e WORDPRESS_DB_USER=wordpress \
-e WORDPRESS_DB_PASSWORD=wordpress.2021 \
-e WORDPRESS_DB_HOST=mariadb \
-e WORDPRESS_DB_NAME=wordpress \
-v /home/usuario/wp:/var/www/html \
-p 1080:80 \
-p 10443:443 \
--restart unless-stopped \
wordpress
La ocupación ha crecido hasta 844 MB.
Primer stack. NPM
Nginx Proxy Manager es un stack de contenedores preparado para usar Nginx como proxy inverso con capacidad de usar certificados.
Este es el stack corregido en el que en el vídeo no arrancaba porque no estaba correctamente definida la creación de la BBDD.
El cambio de BBDD es debido a que la BBDD de jc21/nginx-proxy-manager es de 64 bits y estamos utilizando hardware de 32 bits, por lo que este stack está fuertemente personalizado frente al original y corregidos los problemas que surgen en el vídeo. Aquí si se genera correctamente la BBDD.
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
environment:
DB_MYSQL_HOST: 'db'
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: 'npm.user'
DB_MYSQL_PASSWORD: 'npm.password'
DB_MYSQL_NAME: 'npm.database'
volumes:
- /home/usuario/npm/data:/data
- /home/usuario/npm/ssl:/etc/letsencrypt
db:
image: 'linuxserver/mariadb:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm.root.password.2021'
MYSQL_DATABASE: 'npm.database'
MYSQL_USER: 'npm.user'
MYSQL_PASSWORD: 'npm.password'
volumes:
- /home/usuario/npm/db:/config
Con esto crecemos hasta 1.7 GB.
Cuarto contenedor. Portainer
Portainer es ampliamente conocido. Pero de todas formas dejo aquí el entorno y la forma de crearlo.
docker run -d \
--name portainer \
-p 8000:8000 \
-p 9443:9443 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /home/usuario/portainer:/data \
portainer/portainer-ce:latest
Y ahora hasta 1,9 GB.
El stack prometido. Stack de wordpress
Debidamente modificado para funcionar en máquinas como la BananaPi M2U y otras ARMv7.
version: '3'
services:
database:
image: 'linuxserver/mariadb:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'wordpress'
MYSQL_DATABASE: 'wordpress'
MYSQL_USER: 'wordpress'
MYSQL_PASSWORD: 'wordpress'
TZ: 'Europe/Madrid'
volumes:
- /home/usuario/wp-stack/db:/config
wordpress:
image: 'wordpress:latest'
restart: unless-stopped
ports:
- '1080:80'
- '10443:443'
environment:
DB_MYSQL_HOST: 'database'
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: 'wordpress'
DB_MYSQL_PASSWORD: 'wordpress'
DB_MYSQL_NAME: 'wordpress'
volumes:
- /home/usuario/wp-stack:/var/www/html
El stack prometido. Stack completo de wordpress
Y esta modificación incluye un PHPMyAdmin en el stack. Solo que habrá que dar permisos a la BBDD.
version: '3'
services:
database:
image: 'linuxserver/mariadb:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'wordpress.2021'
MYSQL_DATABASE: 'wordpress'
MYSQL_USER: 'wordpress'
MYSQL_PASSWORD: 'wordpress.2021'
TZ: 'Europe/Madrid'
volumes:
- /home/usuario/wp-stack/db:/config
pma:
image: 'linuxserver/phpmyadmin:latest'
restart: unless-stopped
ports:
- '1180:80'
- '11443:443'
environment:
PMA_HOST: 'database'
TZ: 'Europe/Madrid'
volumes:
- /home/usuario/wp-stack/pma:/config
wordpress:
image: 'wordpress:latest'
restart: unless-stopped
ports:
- '1080:80'
- '10443:443'
environment:
DB_MYSQL_HOST: 'database'
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: 'wordpress'
DB_MYSQL_PASSWORD: 'wordpress.2021'
DB_MYSQL_NAME: 'wordpress'
volumes:
- /home/usuario/wp-stack:/var/www/html
El tema de los permisos de PMA debería ser tan simple como ejecutar dentro del contenedor mediante docker exec -ti wp-stack_database_1 mysql -u root -p
sabiendo que realmente el contenedor se llama así, como en mi caso.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
O bien si no nos fiamos del aislamiento y hay exposición de puertos que puedan ser vulnerados.
De todas formas esto es una solución que no debería usarse en producción.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.%' WITH GRANT OPTION;
Y el resultado final queda así
YoVirtualizador en formato podcast. Ahora también en Sospechosos Habituales: https://feedpress.me/sospechososhabituales
Y sin más, os dejo los enlaces:
Web: https://www.yovirtualizador.com
Grupo de telegram: https://t.me/grupovirtualizador
Podcast: https://www.ivoox.com/podcast-yovirtualizador_fg_f1563806_filtro_1.xml
Canal de youtube: https://www.youtube.com/channel/UC0R70cABSsmC6TFyXth0qPg
Enlace de afiliados de amazon: https://amzn.to/3gX3HmK
Enlace de referidos de la Asociación Podcast: https://www.asociacionpodcast.es/registrarse/socio/?coupon=SB6A70