Este proyecto es una demostración práctica de cómo construir una aplicación basada en microservicios en Go, orquestada con Docker Compose y diseñada siguiendo los principios de la Arquitectura Hexagonal (Puertos y Adaptadores).
Asegúrate de tener instalados:
- Docker
- Docker Compose (generalmente incluido con Docker Desktop)
El proyecto sigue una estructura que combina el Standard Go Project Layout con los principios de la Arquitectura Hexagonal.
/
│ .env.template # Ejemplo de Archivo de configuración
│ .gitignore
│ docker-compose.yml # Orquestación de contenedores
│ Dockerfile # Imagen base para los microservicios
│ go.mod
│ go.sum
│ README.md
├───cmd # Puntos de entrada para cada microservicio
│ ├───products-api
│ │ main.go
│ └───users-api
│ main.go
├───internal # Código privado de la aplicación
│ ├───products # Lógica del microservicio de productos
│ │ ├───adapters # Implementaciones de infraestructura (HTTP, DB)
│ │ │ ├───http
│ │ │ └───repository
│ │ └───core # Lógica de negocio pura (dominio, puertos y servicios)
│ │ ├───domain
│ │ ├───ports
│ │ └───service
│ └───users-api # Lógica del microservicio de productos
│ ├───adapters
│ │ ├───http
│ │ └───repository
│ └───core
│ ├───domain
│ ├───ports
│ └───service
└───pkg # Código reutilizable (ej. conector de DB)
└───database
Asegúrate de tener instalados:
Docker y Docker Compose (generalmente viene con Docker Desktop)
- Crea el archivo de entorno: Copia el archivo de ejemplo
.env.example(que deberías crear) a un nuevo archivo llamado.env.
$ cp .env.template .envEl archivo .env debe contener todas las variables de entorno necesarias para la configuración de las bases de datos y los puertos de las APIs.
Para levantar toda la aplicación (ambos microservicios y sus bases de datos), ejecuta el siguiente comando desde la raíz del proyecto:
$ docker-compose up --buildEste comando construirá las imágenes de Go y levantará todos los contenedores en el orden correcto, esperando a que las bases de datos estén listas antes de iniciar los servicios.
Para detener y eliminar todos los contenedores, redes y volúmenes, ejecuta:
docker-compose down -vLa opción -v es importante para eliminar los volúmenes de datos de las bases de datos y asegurar un inicio limpio la próxima vez.