Poner Compose en Producción

Compose

Poner Compose en Producción o mejor dicho WordPress en desarrollo

Configuración del archivo YAML

Necesitamos dos imágenes que están disponibles en Docker Hub :

-. MySQL : esto establecerá las variables de entorno de WordPress, como la contraseña de root de MySQL, los usuarios y la base de datos.

-. WordPress : necesitamos una imagen de WordPress para crear un sitio web de WordPress. La imagen de WordPress incluye el servidor Apache que necesitamos para ejecutar el código PHP.

 

Establecer los entornos de creación

Hay que definir en este archivo YAML es la ultima versión de Docker-compose https://docs.docker.com/compose/compose-file/compose-versioning/

  • version: «3.9»

Servicios: define los tipos de contenedores que se ejecutarán. En este caso, incluyen

MySQL y WordPress.

  • Services:

#MySQL (Imagen docker de la base de datos)

  • mysql:5.7

#Wordpress (imagen docker basada en Apache)

  • wordpress:

Base de datos

El nombre del contenedor,que desea darle al contenedor de la base de datos.

  • container_name: db

Modo de reinicio: en caso de que el contenedor deje de ejecutarse por algún motivo

  • restart: always

Para ejecutar una base de datos MySQL se necesita una imagen MySQL

  • image: mysql:5.7

Entorno de la base de datos consta de : nombre y la contraseña de la base de datos y el nombre de usuario y la contraseña de la base de datos. WordPress utilizará estas variables de entorno para conectarse al contenedor MySQL.

  • environment:
  •   MYSQL_ROOT_PASSWORD: somewordpress
  •   MYSQL_DATABASE: wordpress
  •   MYSQL_USER: wordpress
  •   MYSQL_PASSWORD: wordpress

Definir los volúmenes del contenedor : asignará los datos del contenedor MySQL a los volúmenes .

  • volumes:
  •   – db_data:/var/lib/mysql

Definir los servicios de WordPress

(Depend on). Asegura que un contenedor solo se inicia cuando los servicios de los que depende están en línea. WordPress se basa en el contenedor MySQL .

  • depends_on:
  •   – db

El nombre debe ser igual al nombre del servicio de base de datos como se define en el contenedor MySQL.

Define la imagen de WordPress :

  • image: wordpress:latest

Defina la política de reinicio :

  • restart: always

Configure el puerto del contenedor de WordPress se basa en Apache se ejecuta en el puerto 80 asigne el puerto apache predeterminado al port 8082 del Servidor.

  • ports:
  •   – «8082:80″

Variables de entorno de WordPress. Configurar los entornos de base de datos que utilizará WordPress. Estas variables incluyen el host de la base de datos de WordPress, el nombre de usuario de la base de datos de WordPress, la contraseña de usuario de la base de datos y el nombre de la base de datos  del entorno del contenedor MySQL.

  • environment:
  •   WORDPRESS_DB_HOST: db:3306
  •   WORDPRESS_DB_USER: wordpress
  •   WORDPRESS_DB_PASSWORD: wordpress
  •   WORDPRESS_DB_NAME: wordpress

Configure estos volúmenes de WordPress. Asignan el directorio actual al directorio que contiene los archivos de WordPress.

  • volumes:
  •   – wordpress_data:/var/www/html

Cree un volumen de nivel superior que defina MySQL como se indica en mysql:/var/lib/mysql.

  • volumes:
  •   db_data: {}
  •   wordpress_data: {}

Nota: Pasemos a ponerlo en producción, este ejemplo que habitualmente uso personalmente en (my-portatil) o en (Server) y no solo en un proyecto, sino no tener limitaciones en el numero proyectos y tenerlos en funcionando al mismo tiempo par lo cual solo tenemos que modificar ports de salida el caso que nos ocupa es el 8082, esta es la magia de docker-Compose .

Cree un directorio de proyecto vacío, Cambiar al directorio del proyecto :

  1. In: root@hp8100:/# mkdir compose-wordpress && cd compose-wordpress

Nota: Cree un docker-compose.yml archivo que inicie su WordPress blog y una MySQL instancia separada con montajes de volumen para la persistencia de datos:

Lo creamos con nano :

  1. In: root@hp8100:/compose-wordpress# nano docker-compose.yml
  • version: «3.9»
  • services:
  •   db:
  •     image: mysql:5.7
  •     volumes:
  •       – db_data:/var/lib/mysql
  •     restart: always
  •     environment:
  •       MYSQL_ROOT_PASSWORD: somewordpress
  •       MYSQL_DATABASE: wordpress
  •       MYSQL_USER: wordpress
  •       MYSQL_PASSWORD: wordpress
  •   wordpress:
  •     depends_on:
  •       – db
  •     image: wordpress:latest
  •     volumes:
  •       – wordpress_data:/var/www/html
  •     ports:
  •       – «8082:80″
  •     restart: always
  •     environment:
  •       WORDPRESS_DB_HOST: db:3306
  •       WORDPRESS_DB_USER: wordpress
  •       WORDPRESS_DB_PASSWORD: wordpress
  •       WORDPRESS_DB_NAME: wordpress
  • volumes:
  •    db_data: {}
  •    wordpress_data: {}

Nota: El docker volumes db_data y wordpress_data persiste las actualizaciones realizadas por WordPress en la base de datos, así como los temas y complementos instalados.

Ejecutar docker-compose up -d desde el directorio de su proyecto:

  1. In: root@hp8100:/compose-wordpress# docker-compose up -d
  2. Out: Creating network «compose-wordpress_default» with the default driver
  3. Out: Creating volume «compose-wordpress_db_data» with default driver
  4. Out: Creating volume «compose-wordpress_wordpress_data» with default driver
  5. Out: Creating compose-wordpress_db_1 … done
  6. Out: Creating compose-wordpress_wordpress_1 … done

Abrirlo http://localhost:8082 en un navegador web, pero esto es Servidor en Network-Local

Nos conectamos desde el Cliente SHH al Servidor SHH :

  1. In: juan@juan-Aspire-ES1-512:~$ ssh -L 8082:localhost:8082 juan@192.168.1.221
  • Con esta configuración del SSH conseguimos que puerto 8082 del servido lo tengamos en el Cliente host como el puerto 8082.
  • Arrancar nuestro navegador del host web : http://localhost:8082
  • Tendremos en nuestro host my-portatil WordPress esperándonos para completar su instalación :

Operaciones posteriores despues de la Instalación

Cuando acabes de trabajar para detener la instancia :

  1. In: root@hp8100:/compose-wordpress# docker-compose stop

Y si queremos a arrancar de nuevo la instancia :

  1. In: root@hp8100:/compose-wordpress# docker-compose up -d

El comando docker-compose down elimina los contenedores y la red predeterminada, pero conserva su base de datos de WordPress.

  1. In: root@hp8100:/compose-wordpress# docker-compose down

El comando docker-compose down –volumes elimina los contenedores, la red predeterminada y la base de datos de WordPress.

  1. In: root@hp8100:/compose-wordpress# docker-compose down –volumes
  2. Out: Stopping compose-wordpress_wordpress_1 … done
  3. Out: Stopping compose-wordpress_db_1 … done
  4. Out: Removing compose-wordpress_wordpress_1 … done
  5. Out: Removing compose-wordpress_db_1 … done
  6. Out: Removing network compose-wordpress_default
  7. Out: Removing volume compose-wordpress_db_data
  8. Out: Removing volume compose-wordpress_wordpress_data

Recopilando:

  • Tenemos en estos apuntes la configuración del archivo Yaml, (los entornos, base de datos y los servicios de WordPress el archivo completo creado con Nano) y por ultimo la puesta en funcionamiento en uno de los servidores, (operaciones posteriores mas usadas después de la instalación).
  • Referencias : Docker
  • Referencias : Moreluz Environment

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *