Henry - Proyecto Módulo 4

e-commerce

Este proyecto es parte del bootcamp: Desarrollo Full Stack de Henry.

Primera aproximación entidades de la base de datos

DER

Instalación desde el repositorio

git clone https://github.com/jourdanmauricio/PM4-ecommerce.git

cd PM4-ecommerce

Configuración de variables de entorno. Debemos generar dos archivos de configuración: .env.development y .env.test

# .env.example

##########
# Server #
##########
HOST=
PORT=
JWT_SECRET=

#################
# Base de datos #
#################
DB_HOST=
DB_NAME=
DB_PORT=
DB_USERNAME=
DB_PASSWORD=

###########
# Docker  #
###########
POSTGRES_PASSWORD=
POSTGRES_DB=
POSTGRES_USER=
PGADMIN_DEFAULT_EMAIL=
PGADMIN_DEFAULT_PASSWORD=

##############
# Fake Users #
##############
USERS_PASSWORD=

##############
# cloudinary #
##############
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_SECRET=
CLOUDINARY_API_KEY=

Crear base de datos local

psql -h localhost -U postgres
password:

CREATE DATABASE pm4-ecommerce
CREATE DATABASE test-pm4-ecommerce

Instalación de dependecias

npm install

Ejecución del servidor

npm run start

Consulta de endpoints

Instalación desde imagen docker

Creamos una carpeta que solo contendrá dos archivos: docker-compose.yml y .env.development

# Creamos el directorio
mkdir pm4-ecommerce-from-image
cd pm4-ecommerce-from-image

# Creamos los dos archivos
touch docker-compose.yml
touch .env.development

# Abrimos VSCode en el proyecto
code .
# docker-compose.yml
version: '3.8'

services:
  nestapp:
    image: jourdanmau/pm4-ecommerce:latest
    ports:
      - '3001:3000'
    env_file:
      - .env.development
    depends_on:
      - postgresdb

  postgresdb:
    image: postgres
    volumes:
      - pgdata:/var/lib/postgresql/data
    env_file:
      - .env.development

  pgadmin:
    image: dpage/pgadmin4
    env_file:
      - .env.development
    ports:
      - '5050:80'

volumes:
  pgdata:

El archivo .env.devepment posee la mismas estructura que para la instalación local, con excepción de la vasriable DB_HOST que debemos setearla en postgresdb

Como vemos en el archivo docker-compose.yml, se crean tres contenedores:

  • nestapp: contine la imagen de la aplicación alojada en dockerhub (jourdanmau/pm4-ecommerce:latest)

  • postgresdb: imagen de la base de datos postgres

  • pgadmin: imagen de pgadmin (interfaz gráfica para gestinar bases de datos)

# Levantamos los contedores
docker compose up -d
# Listamos los contenedores existes
docker container ls -a
# Eliminamos los contenedores
docker rm --force <CONTAINER ID> ... <CONTAINER ID>
# Listamos las imágenes
docker images -a
# Eliminamos las imágenes
docker rmi <IMAGE ID> ... <IMAGE ID>

De esta manera, podemos ver la base de datos a través de pgadmin en la url: http://localhost:5050

Para configurar el servidor debemos utilizar las siguientes variables de entorno:

  • Nombre: App-Docker
  • Nombre/Dirección del servidor: postgresdb
  • Puerto: DB_PORT
  • Base de datos de mantenimiento: DB_NAME
  • Nombre de usuario: DB_USERNAME
  • Contraseña: DB_PASSWORD

Ejecución de test en docker

El único requisito para ejecutar los test dentro del contenedor de la aplicación es crear un archivo .env.test exactamente igual a .env.delopment

# Listamos los contenedores en ejecución
docker ps

# Ingresamos al docker en forma interactiva
docker exec -it <CONTAINER_ID> sh

# Verificamos que estamos dentro del contenedor
ls -ltra

# Ejecutamos test unitarios
npm run test

# Ejecutamos test e2e
npm run test:e2e

Links

Presentación

Deploy

Documentación de la API

Comandos de terminal útiles

Comandos útiles

Test

Comandos para la ejecución de pruebas

Clases Homework

Detalle de las Homeworks

<style> h1 { color: #713f12; } h2 { color: #2563eb; } h3 { color: #a855f7; } img { width: 100%; height: 100%; object-fit: cover; } pre { padding: 10px; } </style>