Cambio de Postgres a MySQL en Docker para CRUD de Productos
Clase 13 de 36 • Curso de NestJS: Persistencia de Datos con TypeORM
Contenido del curso
- 3
Instalación de Docker en Windows, macOS y Ubuntu
01:35 - 4

Configuración de Postgres en Docker Compose
09:18 - 5

Conexión a Postgres en Docker: Terminal y PgAdmin
15:16 - 6

Conexión de NestJS a Postgres con Node Postgres
07:28 - 7

Inyección de Dependencias en NETJS: Conexión a PostgreSQL
10:49 - 8

Conexión a Bases de Datos con Variables de Entorno en Node.js
13:49
- 9

Implementación de TypeORM con NestJS en Proyectos Node.js
09:14 - 10

Creación de Entidades en ORM para Tiendas Virtuales
07:46 - 11

Implementación del Patrón Repository en NestJS con TypeORM
13:31 - 12

Operaciones CRUD en ProductService usando TypeORM y Postgres
13:35 - 13

Cambio de Postgres a MySQL en Docker para CRUD de Productos
17:28
- 18

Relaciones 1 a 1 en Bases de Datos con TimeORM
18:58 - 19

Manipulación de Relaciones Uno a Uno en Controladores y Servicios
10:28 - 20

Relaciones Uno a Muchos en Bases de Datos con TypeORM
10:36 - 21

Gestión de Relaciones Uno a Muchos en Controladores de API
10:27 - 22

Relaciones Muchos a Muchos en Time1M: Creación y Manejo Práctico
08:38 - 23

Manipulación de Relaciones Muchos a Muchos en Controladores
15:08 - 24

Manipulación de Relaciones Muchos a Muchos con TimeORM en JavaScript
19:09 - 25

Relaciones Muchos a Muchos con Campos Agregados en TimeWareM
16:41 - 26

CRUD de órdenes de compra y gestión de ítems en NestJS
30:07
- 27

Paginación de Productos con Limit y Offset en Controladores API
10:37 - 28

Filtrado de Precios con Rango Usando Between en Time Wareham
10:17 - 29

Indexación de Parámetros en Bases de Datos: Uso y Precauciones
02:56 - 30

Buenas prácticas de nombramiento en JavaScript y bases de datos
17:52 - 31

Serialización y Transformación de Datos en APIs con ClassTransformer
16:55
¿Cómo cambiar de Postgres a MySQL utilizando Docker?
Cambiar de un motor de base de datos a otro puede parecer una tarea difícil, pero con Docker y las herramientas adecuadas, es un proceso bastante sencillo. Si estás trabajando con Time Warp M y deseas cambiar de Postgres a MySQL, solo necesitas algunos pasos clave que te detallo a continuación, asegurándote de que tu proyecto se ejecute sin problemas en MySQL.
¿Cómo configurar el servicio de MySQL?
Para empezar con MySQL, no es necesario instalarlo directamente en tu máquina. Puedes llevar a cabo todo este proceso con Docker, que te ayudará a correr MySQL en un contenedor aislado. Aquí tienes cómo configurarlo:
- Configurar el contenedor de MySQL:
- Debes declarar en tu archivo docker-compose que vas a tener un servicio de MySQL.
- Especifica la versión que desees usar. Un estándar común es la versión 5 de MySQL.
- Establece las variables de entorno necesarias, como:
MYSQL_DATABASE: nombre de la base de datos.MYSQL_USER: nombre de usuario (por ejemplo, "root").MYSQL_ROOT_PASSWORD: clave de acceso para root.
- Conecta el puerto de MySQL (3306) para que sea accesible desde tu máquina local.
- Define un volumen para asegurarte de que la persistencia de datos esté habilitada.
- Añade
MYSQL_dataa tu archivo.gitignorepara evitar subir los archivos de persistencia al repositorio.
services:
mysql:
image: mysql:5
environment:
- MYSQL_DATABASE=my_database
- MYSQL_USER=root
- MYSQL_ROOT_PASSWORD=123456
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
¿Cómo visualizar la base de datos MySQL?
Una vez que tienes MySQL configurado, seguramente querrás monitorear y manejar tus bases de datos sin complicaciones. Aquí es donde entra phpMyAdmin:
- Configurar phpMyAdmin:
- Añade un nuevo servicio en docker-compose para phpMyAdmin.
- Define las variables de entorno necesarias para que phpMyAdmin pueda conectarse a MySQL.
- Asegúrate de que se comunique internamente a través del puerto correcto (8080 en la máquina local, 80 en el contenedor).
services:
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_HOST=mysql
- MYSQL_ROOT_PASSWORD=123456
ports:
- "8080:80"
depends_on:
- mysql
¿Cómo solucionar problemas comunes al configurar MySQL?
Como en todos los sistemas, podría encontrarse con algunos problemas comunes durante la configuración:
- Error de puerto ya en uso: Si Docker indica que el puerto 3306 ya está en uso, por otro servicio o contenedor, identifica y detén el contenedor que está utilizando ese puerto utilizando:
docker stop <container_id>
- Problemas de conexión con phpMyAdmin: Asegúrate de que las variables de entorno están configuradas correctamente, recuerda que
PMA_HOSTdebe estar en mayúsculas y correctamente señalado amysql.
¿Cómo actualizar la configuración para MySQL en tu aplicación?
Con la infraestructura de MySQL lista, tendrás que actualizar algunos aspectos de tu aplicación para que funcione correctamente con MySQL:
-
Actualizar las variables de entorno: Asegúrate de que las variables en tu código fuente reflejen las configuraciones para MySQL.
-
Modificar el módulo de la base de datos en la aplicación:
- Cambia la conexión del módulo de base de datos de Postgres a MySQL.
- Verifica que todas las configuraciones (como las rutas de acceso, credenciales y puertos) están establecidas correctamente.
import { TypeOrmModule } from '@nestjs/typeorm';
TypeOrmModule.forRoot({
type: 'mysql',
host: process.env.MYSQL_HOST,
port: +process.env.MYSQL_PORT,
username: process.env.MYSQL_USER,
password: process.env.MYSQL_ROOT_PASSWORD,
database: process.env.MYSQL_DATABASE,
entities: [/* tus entidades */],
synchronize: true,
});
- Instalar el driver necesario: Al cambiar a MySQL, necesitas instalar el driver correspondiente para Node.js, normalmente
mysql2.
npm install mysql2
Probar la conexión y asegurarse de que todo funciona
Finalmente, después de realizar todos los cambios, ejecuta nuevamente tu aplicación para asegurarte de que todo funcione correctamente. Revisa tus tablas y productos en phpMyAdmin para confirmar que los datos se están almacenando finalmente en MySQL. Esto puede ser verificado realizando solicitudes CRUD desde tu aplicación y comprobando el estado de tus datos en phpMyAdmin.
Recuerda, el cambio de Postgres a MySQL no solo es una prueba de concepto, sino también una experiencia de aprendizaje que puede reforzar tus habilidades en administración de bases de datos, Docker, y desarrollo web en general. ¡Atrévete a explorar e implementar en tus proyectos!