Este es un proyecto de estudio, que busca afianzar conceptos y tecnologías aprendidas. Se trata de un sistema básico de facturación, administración de usuarios, control y gestión de bodegas
El sistema está pensado para ser un Monolito Modular. El sistema se desarrolla en .NET con un estilo de arquitectura vertical.
Las tecnologías aplicadas en este proyecto son:
Para instalar una imagen de Postgres con la ayuda de Docker es necesario seguir los siguientes pasos:
- Se debe hacer pull a la imagen de postgres con la ayuda del siguiente comando
#Si desea la versión latest
docker pull postgres
#Si desea instalar cualquier otra versión modifique VERSION_TAG por la versión elegida
docker pull postgres:VERSION_TAG- Una vez finalice la descarga de la imagen, puede verificar el estado de la imagen con la ayuda del siguiente comando:
docker images- Para ejecutar la base de datos deberá correr el comando:
# Este comando ejecuta la imagen de postgres previamente instalada en docker
# --name: Esta parámetro permite darle un nombre (tag) al contenedor
# -e POSTGRES_PASSWORD: Este parámetro crea la contraseña para la base de datos
# -e POSTGRES_USER: Este parámetro crea el usuario para la base de datos
# -e POSTGRES_DB: Este parámetro crea la base de datos
# -p: son los puertos por los que se expone la base de datos PuertoHost:PuertoContenedor
# -v: crea el volumen para almacenar los datos localmente
# -d: ejecución en modo detach de la imagen
docker run --name postgres-db \
-e POSTGRES_PASSWORD=mysecretpassword \
-e POSTGRES_USER=myuser \
-e POSTGRES_DB=myowndatabase \
-p 5432:5432 \
-v postgres-data:/var/lib/postgresql/data \
-d postgres- Una vez esté corriendo el contenedor, puede realizar la validación con el comando:
docker ps - Para interactuar con la base de datos en SQL Shell puede utilizar:
docker exec -it postgres-db psql -U myuser -d myowndatabase- Si prefiere hacer uso de un GUI para interactuar con la base de datos, puede utilizar pgAdmin. Para instalar la imagen debe correr el siguiente comando:
docker pull dpage/pgadmin4- Una vez instalada la imagen, puede ejecutar un contenedor de la siguiente manera:
# Crea un contenedor usando la imagen dpage/pgAdmin4
# --name: Este parámetro le asigna un nombre al contenedor
# -p: Este parámetro mapea los puertos por los que se va a exponer la aplicacion PuertoLocal:PuertoContenedor
# -e PGADMIN_DEFAULT_EMAIL: correo con el cual se realiza el login
# -e PGADMIN_DEFAULT_PASSWORD: contraseña para el acceso a pgAdmin
# -d: ejecución en modo detach
docker run --name pgadmin -p 5050:80 -e PGADMIN_DEFAULT_EMAIL=user@domain.com -e PGADMIN_DEFAULT_PASSWORD=mysecretpassword -d dpage/pgadmin4- Cuando este corriendo el contenedor, podrá acceder a localhost:5050 para tener el control de la base de datos.
- Lo primero que debes hacer es validar si tienes instaldo el componente de CLI para Entity Framework
dotnet ef- Si la ejecución de ese comando te genera algún tipo de error, debes ejecutar lo siguiente:
# Si quieres instalar de forma global para todos los proyectos (Recomendado)
dotnet tool install --global dotnet-ef
# Si quieres solo instalar la herramienta en el proyecto local
dotnet tool install dotnet-efPara crear una imagen de docker del proyecto .NET, es necesario lo siguiente:
- Dentro del la carpeta del proyecto, se debe crear un archivo llamado Dockerfile.
# Debes reemplazar el ASPNET_VERSION por la versión del ASPNET que desees. Esta información la puedes tomar de Dockerhub
FROM mcr.microsoft.com/dotnet/aspnet:ASPNET_VERSION AS base
WORKDIR /app
# INICIA ETAPA DE CONSTRUCCION DEL PROYECTO (BUILD)
# Debes reemplazar el SDK_VERSION por la versión del sdk que desees. Esta información la puedes tomar de Dockerhub
# Recuerda reemplazar tu-proyecto.csproj por el nombre real de tu proyecto
FROM mcr.microsoft.com/dotnet/sdk:SDK_VERSION AS build
WORKDIR /src
# Copia solo el archivo del proyecto a la ruta de trabajo
COPY tu-proyecto.csproj ./
# Restaura las dependencias del proyecto
RUN dotnet restore "./tu-proyecto.csproj"
# Copia el resto del código fuente
COPY . .
# Establece el directorio de trabajo
WORKDIR /src/.
# Compila el proyecto en modo Release
RUN dotnet build "tu-proyecto.csproj" -c Release -o /app/build
FROM build AS publish
# Publica la aplicación
RUN dotnet publish "tu-proyecto.csproj" -c Release -o /app/publish
FROM base AS final
# Establece el directorio de trabajo /app
WORKDIR /app
# Copia los archivos publicados desde la etapa de publicación
COPY --from=publish /app/publish .
# Define el punto de entrada para la aplicación
ENTRYPOINT ["dotnet", "tu-proyecto.dll"]- Una vez creado el archivo Dockerfile, debe ubicarse en la carpeta principal del proyecto, luego de esto necesitará correr el siguiente comando:
# Crea la imagen de tu proyecto basandose en el archivo Dockerfile
# -t: El tag con el que identificaras a tu imagen. Se compone del nombre_imagen : version_imagen. La versión por defecto es latest
# -f: Ruta donde está el archivo Dockerfile
docker build -t tuproyecto:version -f Dockerfile .El objetivo de este proyecto es aplicar los conceptos aprendidos en temas como:
- API Security
- API Documentation
- Unit Test
- Vertical Slice Architecture
- PostgreSQL
- MongoDB
- Manejo de contenedores
Todo esto utilizando las tecnologías mencionadas anteriormente.
Los objetivos especificos pautados para el desarrollo de este proyecto son:
- Crear un backend seguro utilizando JWT Tokens y autorización por roles.
- Generar APIs bien documentadas haciendo uso de OpenAPI y documentación interna del código.
- Aplicar pruebas unitarias y un pipeline de despliegue donde se ejecuten de manera automática con la ayuda de Github Actions.
- Fortalecer los conceptos aprendidos en arquitectura vertical aplicandolos en el desarrollo backend.
- Fortalecer conceptos aprendidos para bases de datos PostgreSQL y MongoDB mediante un buen diseño de bases de datos


