Creo que es el momento de volverme a presentar y como ya sabeis si estais aqui o me habeis encontrado a través de mis redes sociales o través del Internet.
La idea de todo esto es explicar tanto a principiantes cómo a personas más avanzadas que necesitamos hacer para desplegar en una instancia en Cloud lo que entendemos por una maquina virtual. Esto tambien seria posible realizarlo en una maquina local o en una maquina virtual desplegada a través de herramientas de virtualización como Proxmox.
Ahora ya sabes como desplegar paso a paso un wordpress actualizado con mysql
Ahora vamos a desplegar un contenedor Nginx y lets encrypt para tener un certificado SSL firmado por una entidad fiable.
Piensa que al final puedes crear tu propio stack y modificar tu propio codigo:
version: '3'
services:
wp:
container_name: cristiancasis_front
image: wordpress:latest # https://hub.docker.com/_/wordpress/
ports:
- 81:80 # change ip if required
volumes:
- ./config/php.conf.uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
- cristiancasis_front_data:/var/www/html # Full wordpress project
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: "${DB_NAME}"
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: "${DB_ROOT_PASSWORD}"
VIRTUAL_PORT: 81
depends_on:
- db
wpcli:
image: wordpress:cli
user: xfs
volumes:
- cristiancasis_front_data:/var/www/html
depends_on:
- db
- wp
db:
container_name: db
image: mysql:latest # https://hub.docker.com/_/mysql/ - or mariadb https://hub.docker.com/_/mariadb
ports:
- 3306:3306 # change ip if required
command: [
'--default_authentication_plugin=mysql_native_password',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci'
]
volumes:
- ./wp-data:/docker-entrypoint-initdb.d
- cristiancasis_db_data:/var/lib/mysql
environment:
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
En está primera parte unicamente tenemos la parte del website wordpress sin certificado letsencrypt.
Como vemos usamos la version 3 de docker-compose.
nginx:
image: nginx:1.15-alpine
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./data/nginx:/etc/nginx/conf.d
- cristiancasis_front_data:/var/www/html:rw #wordpress cristiancasis.com
# - ./data/certbot/conf:/etc/letsencrypt
# - ./data/certbot/www:/var/www/certbot
- ./letsencrypt/conf:/etc/letsencrypt
certbot:
container_name: certboot
image: certbot/certbot
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
letsencrypt:
restart: always
image: vdhpieter/letsencrypt-webroot
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./letsencrypt/conf:/etc/letsencrypt
- ./letsencrypt/html:/tmp/letsencrypt
- cristiancasis_front_data:/var/www/html
links:
- nginx
environment:
- DOMAINS=domainA domainB
- EMAIL=info@cristiancasis.com
- WEBROOT_PATH=/var/www/html
- EXP_LIMIT=30
- CHECK_FREQ=30
- CHICKENEGG=1
- STAGING=0
volumes:
cristiancasis_db_data:
cristiancasis_front_data:
Ahora lo que es necesario hacer es añadir los contenedores tanto de nginx con su configuracion y el contenedor de letsencrypt
El fichero .env contendrá las variables establecidas en el docker-compose.yml
Accede a nuestros CURSOS ONLINE! ⬇️ ⬇️ ⬇️ ⬇️ ⬇️
Docker & Networking
Master en crear tus propias aplicaciones desde cero y entender el funcionamiento de docker
Kubernetes in AWS
Aprende todo lo necesario para enterder el funcionamiento y saber como desplegar aplicaciones
root@instance-1:/opt/cristiancasis# cat .env
DB_ROOT_PASSWORD=default
DB_NAME=name_database
El fichero nginx.conf estará el el directorio ./data/nginx
El apartado más importante que tenemos que tener en cuenta es: proxy_pass http://nombre_del_contenedor;
Pingback: El eccomerce perfecto en producción con Docker | Cristian Casis