Docker, let’s encrypt y wordpress – todo en uno

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

docker cristiancasis.com
Comprar Acceso de por vida

Kubernetes in AWS

Aprende todo lo necesario para enterder el funcionamiento y saber como desplegar aplicaciones

amazoneks cristiancasis.com
Comprar Acceso de por vida
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;

Observa el video en el que explico el apartado anterior

Un comentario de “Docker, let’s encrypt y wordpress – todo en uno

  1. Pingback: El eccomerce perfecto en producción con Docker | Cristian Casis

Los comentarios están cerrados.