GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Guía de Docker:implementación de Ghost Blog con MySQL y Traefik con Docker

Ghost es una poderosa plataforma de publicación y blog de código abierto basada en nodejs. Está bien diseñado y es fácil de usar. La plataforma fantasma está escrita en JavaScript y utiliza node.js como entorno de ejecución. La primera versión de Ghost lanzada en 2013 bajo la licencia MIT.

Traefik es un proxy inverso HTTP moderno y un equilibrador de carga para microservicios. Traefik facilita la implementación de todos los microservicios, integrados con componentes de infraestructura existentes como Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, etc.

En este tutorial, mostraremos paso a paso cómo instalar y configurar Ghost como contenedor Docker. Instalaremos y configuraremos Ghost con la última versión de Docker CE, usaremos MySQL como base de datos y Traefik como proxy inverso.

Requisitos

  • Ubuntu 18.04 LTS
  • Privilegios de raíz

Lo que haremos

  1. Instalar Docker CE en Ubuntu 18.04 LTS
  2. Configurar Docker para usuarios no root
  3. Instalar Docker Compose
  4. Configurar pila fantasma
    • Cree una red personalizada
    • Crear un directorio de proyectos
    • Crear y configurar contenedor MySQL
    • Crear y configurar proxy inverso de Traefik
    • Crear y configurar un contenedor fantasma
  5. Implementar Ghost con MySQL y Traefik
  6. Pruebas

Paso 1:instalar Docker CE en Ubuntu 18.04 LTS

El primer paso que haremos en este tutorial es instalar la última versión de docker-ce del sistema. La versión docker-ce se puede instalar desde el repositorio oficial de docker.

Agregue la clave docker y el repositorio docker-ce.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

El comando actualizará automáticamente todos los repositorios en el sistema.

Ahora instale docker usando el comando apt a continuación.

sudo apt install docker-ce -y

Una vez completada la instalación, inicie el servicio docker y habilítelo para que se inicie cada vez que se inicie el sistema.

systemctl start docker
systemctl enable docker

La última versión de docker-ce se ha instalado en el sistema Ubuntu 18.04.

Paso 2:configurar Docker para usuarios no root

En esta guía, todos los microservicios de contenedores se ejecutarán bajo el usuario normal/no root. Por lo tanto, debemos configurar el usuario para que pueda ejecutar el contenedor Docker y ejecutar el comando sudo para obtener privilegios de root.

Cree un nuevo usuario llamado 'hakase' y cree la contraseña.

useradd -m -s /bin/bash hakase
passwd hakase

Ahora asigne el usuario 'hakase' a los grupos 'sudo' y 'docker'.

usermod -a -G root hakase
usermod -a -G docker hakase

Y reinicie el servicio docker.

systemctl restart docker

El 'hakase' ahora puede ejecutar el contenedor docker y ejecutar el comando sudo para obtener privilegios de root.

Inicie sesión como usuario 'hakase' y ejecute el contenedor docker hello-world.

su - hakase
docker run -it hello-world

Y el siguiente es el resultado.

Paso 3:instalar Docker Compose

En este tutorial, instalaremos docker compose 1.21 desde un archivo binario en el repositorio de Github.

Descargue el binario docker-compose en el directorio '/usr/local/bin'.

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

Y haga que el archivo 'docker-compose' sea ejecutable cambiando el permiso del archivo.

sudo chmod +x /usr/local/bin/docker-compose

Se instaló docker compose; verifíquelo con el siguiente comando.

docker-compose version
docker version

Se ha instalado Docker-compose 1.21 con Docker-ce 1.18.

Paso 4:configurar la pila fantasma

En este paso, configuraremos la ventana acoplable y crearemos un nuevo archivo docker-compose para la instalación fantasma.

Crearemos una nueva red personalizada de docker y crearemos un nuevo archivo yml compuesto por docker que contiene tres servicios principales, incluida la base de datos MySQL, el proxy inverso Traefik y el propio blog Ghost.

Crea una red personalizada

Muestre la red docker disponible usando el comando de red docker a continuación.

docker network ls

Cree una nueva red acoplable personalizada para el proxy inverso traefik denominada 'traefiknet'.

docker network create traefiknet

Ahora verifique nuevamente la red disponible en el sistema docker.

docker network ls

Se ha creado la red personalizada para Treafik llamada 'traefiknet'.

Crear un directorio de proyectos

Después de crear la red personalizada de docker, crearemos un nuevo directorio de proyecto llamado 'ghost' y crearemos un nuevo archivo docker-compose.yml.

Inicie sesión con el usuario 'hakase'.

su - hakase

Cree un nuevo directorio 'fantasma' y cambie el directorio de trabajo a él.

mkdir ghost/
cd ghost/

Y cree un nuevo archivo docker-compose.

touch docker-compose.yml

Crear y configurar el servicio MySQL

MySQL es el primer servicio que queremos crear y queremos crear el contenedor de MySQL con las configuraciones a continuación.

  • Usaremos la imagen acoplable de MySQL 5.7.
  • Monte el directorio de datos de MySQL en el directorio de host de la ventana acoplable local.
  • Ejecutar el servicio MySQL en la red interna local.
  • Configure el usuario y la contraseña de MySQL.
    • Contraseña raíz de MySQL:mypassword
    • Base de datos para el fantasma llamado 'ghostdb' con el usuario 'ghost' y la contraseña es 'ghostdbpass'
  • El contenedor de MySQL se llamará 'mysql'.

Dentro del directorio 'fantasma', cree un nuevo directorio llamado 'datos' y edite el archivo 'docker-compose.yml'.

mkdir -p data/
vim docker-compose.yml

Pegue la configuración a continuación.

version: '3.3'

services:

  mysql:
    image: mysql:5.7
    restart: always
    volumes:
      - ./data:/var/lib/mysql
    labels:
      - "traefik.enable=false"
    networks:
      - internal
    environment:
      MYSQL_ROOT_PASSWORD: mypassword
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghostdbpass
      MYSQL_DATABASE: ghostdb
    container_name: mysql

Guardar y salir.

Crear y configurar Traefik Reverse Proxy

Después de crear el servicio MySQL, crearemos y configuraremos el contenedor de proxy inverso traefik.

Antes de editar el script 'docker-compose.yml', necesitamos crear una nueva configuración de traefik llamada 'traefik.toml'.

vim traefik.toml

Pegue la configuración de la regla traefik a continuación.

#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"

#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]

#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

#Enable Traefik Dashboard on port 8080
#with basic authentication method
#hakase and password
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
    users = [
        "hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
    ]

[api]
entrypoint="dash"
dashboard = true

#Enable retry sending a request if the network error
[retry]

#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false

#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

Guardar y salir.

Ahora necesitamos crear un nuevo archivo para la configuración SSL Letsencrypt 'acme.json'. Se utiliza para almacenar todos los que letsencrypt genere un registro.

Cree el archivo 'acme.json' en blanco y cambie el permiso a 600.

touch acme.json
chmod 600 acme.json

A continuación, editaremos el script 'docker-compose.yml' y agregaremos la configuración del servicio traefik.

  • Usaremos la última imagen de la ventana acoplable traefik.
  • El contenedor se llamará 'traefik'
  • Utiliza la red personalizada 'traefiknet' y expone los puertos HTTP y HTTPS.
  • Monte el archivo docker sock y la configuración traefik 'traefik.toml' y 'acme.json'
  • Definimos la URL del panel de control de traefik y el backend a través de las etiquetas de la ventana acoplable.

Edite 'docker-compose.yml'.

vim docker-compose.yml

Pegue la configuración del servicio traefik a continuación.

  traefik:
    image: traefik:latest
    command: --docker
    ports:
      - 80:80
      - 443:443
    labels:
      - "traefik.enable=true"
      - "traefik.backend=dashboard"
      - "traefik.frontend.rule=Host:traef.hakase-labs.io"
      - "traefik.port=8080"
    networks:
      - traefiknet
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    container_name: traefik
    restart: always

Guardar y salir.

Crear y configurar el servicio fantasma

Después de configurar el proxy inverso traefik, crearemos la configuración principal del servicio fantasma.

Detalles de configuración que queremos crear.

  • Usaremos el fantasma v1 y la versión alpina de la ventana acoplable pequeña.
  • Montaremos el directorio de contenido fantasma en el directorio local llamado 'blog'.
  • El servicio fantasma se ejecutará en el puerto predeterminado con el nombre de dominio 'gho.hakase-labs.io', la configuración a través de etiquetas acoplables.
  • El servicio fantasma usará dos redes docker, interna y traefiknet.
  • Estamos configurando los detalles de la base de datos MySQL desde la configuración del contenedor mysql.
  • Y el fantasma se iniciará cuando el contenedor traefik y MySQL esté en funcionamiento.

Cree un nuevo directorio llamado 'blog' y edite el archivo 'docker-compose.yml'.

mkdir -p blog/
vim docker-compose.yml

Pegue la configuración a continuación.

  ghost:
    image: ghost:1-alpine
    restart: always
    ports:
      - 2368
    volumes:
      - ./blog:/var/lib/ghost/content
    labels:
      - "traefik.enabled=true"
      - "traefik.backend=ghost"
      - "traefik.frontend.rule=Host:gho.hakase-labs.io"
      - "traefik.docker.network=traefiknet"
      - "traefik.port=2368"
    networks:
      - internal
      - traefiknet
    environment:
      database__client: mysql
      database__connection__host: mysql
      database__connection__user: ghost
      database__connection__password: ghostdbpass
      database__connection__database: ghostdb
    container_name: ghost
    depends_on:
      - mysql
      - traefik

networks: traefiknet: external: true internal: external: false

Guardar y salir.

Y ahora tenemos todo el directorio y la configuración como se muestra a continuación.

tree

Paso 5:implementar Ghost con MySQL y Traefik

Para compilar y ejecutar todo nuestro servicio de pila fantasma, podemos usar el siguiente comando.

docker-compose up -d

Cuando esté completo, verifique todos los servicios en ejecución.

docker-compose ps

Y el siguiente es el resultado.

Si tiene un error, verifique el registro del contenedor usando los comandos a continuación.

docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost

La pila fantasma con MySQL y el proxy inverso Traefik está funcionando.

Paso 6 - Prueba

Abra el panel de Traefik con su URL, la mía es http://traef.hakase-labs.io/

Inicie sesión con el usuario y la contraseña en el archivo 'traefik.toml'.

Y el siguiente es el tablero de Traefik.

Para la instalación de Ghost, escriba la URL fantasma en la barra de direcciones, la mía es http://gho.hakase-labs.io/

Y obtendrás la página de inicio fantasma.

Ahora visite la página de administración para instalar y configurar un nuevo usuario administrador. Mi URL es: http://gho.hakase-labs.io/admin/

Haga clic en el botón verde para crear un nuevo usuario administrador.

Escriba detalles de usuario, contraseña, correo electrónico y haga clic nuevamente en el botón verde.

Para invitar a un nuevo miembro o usuario, haga clic en el enlace 'Haré esto más tarde...'.

Ahora obtendrá el panel de Ghost.

Y después de crear la publicación de muestra, el siguiente es el resultado.

La instalación del blog fantasma con la base de datos MySQL y Traefik Reverse Proxy en el entorno Docker se completó con éxito.

Referencias

  • https://hub.docker.com/_/ghost/
  • https://docs.traefik.io/

Docker
  1. Cómo instalar el software Ghost Blog con Apache y SSL en Ubuntu 16.04

  2. Ejecución de PostgreSQL en Docker, una guía rápida y práctica

  3. Cómo instalar WordPress con Docker, una guía fácil de seguir

  4. Cómo ejecutar MySQL en Docker Container:una guía simple y fácil de seguir

  5. Cómo instalar y alojar un servidor OpenVPN con Docker

Alojamiento virtual con vsftpd y MySQL en Ubuntu 12.10

Cómo instalar el software Ghost Blog con Apache y SSL en Ubuntu 15.10

Cómo configurar MySQL con Docker en Linux

Implementación de una pila EFK con Docker

Guía completa de Ghost CMS con alojamiento propio con Docker

Cómo implementar una aplicación PHP con Nginx y MySQL usando Docker y Docker Compose