"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Usando MySQL en un contenedor Docker para sus proyectos

Usando MySQL en un contenedor Docker para sus proyectos

Publicado el 2024-08-18
Navegar:609

Using MySQL in a Docker Container for your Projects

Creo firmemente en mantener limpio mi sistema host. Y los contenedores Docker son la solución perfecta para esto. Supongamos que está trabajando en una aplicación React con un backend Node/Express y un servidor MySQL para sus necesidades de base de datos. Normalmente, instalaría mysql en su sistema host, crearía una base de datos, crearía un usuario con una contraseña y le otorgaría privilegios de usuario para trabajar con esa base de datos.

En lugar de perder tiempo configurando esto cada vez para cada proyecto, simplemente uso una imagen de Docker para crear mi servidor de base de datos MySQL, para que esté listo, en funcionamiento y funcionando en unos segundos, con toda la configuración necesaria. alguna vez necesito.

Créame, una vez que descubra su flujo de trabajo utilizando esta ruta, nunca volverá a las viejas costumbres. Entonces, así es como lo hago de una manera muy simple y básica.

Si tiene algo de experiencia con Docker y desea omitir este tutorial y acceder directamente a una versión TLDR, este Gist sería mucho más rápido.

¿Qué necesitaremos?

Para usar Docker, necesitamos Docker, ¡obvio! No entraré en detalles sobre la instalación de Docker aquí. Si no se siente cómodo con una CLI o utiliza Windows/MacOS, opte por Docker Desktop, que hará todo el trabajo pesado detrás de escena.

Los usuarios de Linux también pueden instalar Docker Engine con el complemento Docker Compose o Docker Desktop si no lo desean.

Normalmente no necesitas una cuenta en Docker Hub para descargar imágenes públicas como la imagen oficial de MySQL que usaremos.

Muy bien, ¿y ahora qué?

Hay dos formas de hacer esto.

Uso de Docker Run (no recomendado)

Para poder ejecutar directamente el contenedor usando el comando docker run, primero deberá haber descargado la imagen de MySQL en su sistema. Para llevar la imagen a su sistema, simplemente use este comando:

docker pull mysql

Nota: Si no necesita una versión particular de MySQL, este comando descargará la última (la que tiene la etiqueta más reciente). Puede explorar más etiquetas y versiones desde Docker Hub si lo necesita.

Una vez que Docker haya terminado de descargarse, podrás ver la imagen descargada de esta manera:

docker image ls

Ahora, para ejecutar el contenedor, debe agregar muchas banderas con el comando docker run. Puedes visitar este enlace para consultar todas las opciones que tienes. También debe recordar todas las banderas que necesita agregar, ya que faltar algunas podría generar errores o iniciar un contenedor incapaz.

Además, cada vez que desees ejecutar tu contenedor, tendrás que extraer este comando largo del historial de la terminal o escribirlo nuevamente. No tiene sentido eso.

Esta es la razón por la que NO recomiendo este enfoque. Hay una manera mejor.

Composición acoplable

Crearemos un archivo Docker Compose que le indicará a Docker lo que necesitamos al iniciar el contenedor. Una vez que todo está dispuesto en el archivo, iniciar el contenedor se convierte en pan comido.

Nota: Puedes crear tu archivo de redacción con cualquier nombre. Si usa su propio nombre o almacena su archivo de redacción en otras carpetas, deberá proporcionar una marca -f para que funcione. Alternativamente, si está ejecutando el comando desde la misma carpeta que su archivo, puede nombrar el archivo docker-compose.yaml.

Un archivo Docker Compose es un archivo YAML. El nuestro se verá así:

# This Docker Compose YAML deploys a MySQL database
services:
  container-name:

    image: mysql # Official MySQL image from Docker Hub
    restart: always

    environment:
      # Note - Root password is mandatory for the container to run and grant privileges to our User.
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

      MYSQL_DATABASE: ${MYSQL_DATABASE} # Same name as used in your project

      # DB User Details
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

    ports:
      # Adjust this port as per your needs -> :
      - 3308:3306 # DB is available at localhost:3308 on the host.

    volumes:
      - ./volumes/db-mnt:/var/lib/mysql

Este archivo también está disponible en el Gist mencionado al principio.

Importante saber

  1. Asignación de puertos: el primer puerto es el puerto del host (su sistema) que está asignado al segundo puerto (el puerto dentro del contenedor acoplable). Esto significa que, en el ejemplo anterior, puede acceder a la base de datos en localhost:3308. A menos que sepa lo que está haciendo, mantenga el segundo puerto como 3306. Este es el puerto predeterminado para MySQL.
  2. Montaje de enlace de volumen: estamos montando un volumen local en el contenedor para conservar los datos dentro de la base de datos. Esto facilita la copia de seguridad y el desplazamiento si es necesario. También puede dejar que Docker administre su propio volumen y cree copias de seguridad periódicas en su sistema host. #### El archivo de entorno Para proporcionar las credenciales necesarias a Docker mientras creamos el contenedor, crearemos un archivo .env, tal como lo hacemos en nuestras aplicaciones React o Backend.

Puedes crear este archivo en la misma carpeta donde está tu archivo de redacción, o puedes crearlo en cualquier lugar que desees, pero deberás proporcionar la ruta mientras llamas a docker-compose.

# Content of the Environment Variables file
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_DATABASE=nameofdatabase
MYSQL_USER=dbusername
MYSQL_PASSWORD=dbuserpassword

Una vez que tengamos todo esto en su lugar, simplemente podemos usar un pequeño comando y nuestra base de datos estará lista y lista para esperarnos.

docker-compose up -d

Ahora estás listo para establecer una conexión a la base de datos utilizando tus medios preferidos.

Y dado que hemos configurado nuestros contenedores para que se ejecuten desde un archivo de redacción, puede realizar una copia de seguridad de forma segura en un sistema git en su repositorio. Solo asegúrate de .gitignorar el archivo .env.

Declaración de liberación Este artículo se reproduce en: https://dev.to/nyukeit/using-mysql-in-a-docker-container-for-your-projects-4ham?1 Si hay alguna infracción, comuníquese con [email protected] para borrarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3