Esta documentación describe cómo levantar y ejecutar el entorno Dev del proyecto SmartPot utilizando Docker Compose. Este entorno sirve como punto de desarrollo, ideal para pruebas previas al despliegue final.
Asegúrate de tener instalados los siguientes programas en el servidor donde se desplegará el entorno:
- Docker: Instrucciones de instalación
- Docker Compose: Si no viene incluido con tu versión de Docker, puedes instalarlo siguiendo las instrucciones oficiales.
Antes de ejecutar el entorno, debes tener en el servidor los siguientes archivos dentro del mismo directorio:
docker-compose.yml.env.db.env.cache.env.api.env.web.env.mail
Important
Los archivos .env deben contener las configuraciones específicas de cada servicio.
No es necesario detallar su contenido aquí, pero deben estar correctamente referenciados en el docker-compose.yml.
Puedes iniciar el entorno dev de SmartPot en un solo paso con el siguiente comando:
curl -L https://raw.githubusercontent.com/SmartPotTech/.github/main/docker/dev/docker-compose.yml -o docker-compose.yml && docker-compose -p smartpot up -dEste comando realiza las siguientes acciones:
- Descarga el archivo
docker-compose.ymlcorrespondiente al entorno dev desde el repositorio. - Levanta los contenedores definidos en el archivo en segundo plano (
-d).
Asegúrate de que los archivos .env se encuentren en el mismo directorio antes de ejecutar el comando.
Para detener el entorno:
docker-compose -p smartpot downEl archivo docker-compose.yml de dev define una infraestructura compuesta por cuatro servicios principales:
- MongoDB: Base de datos del sistema SmartPot.
- Redis: Servicio de caché para optimizar el rendimiento.
- API SmartPot: Backend que gestiona la lógica de negocio y expone los endpoints REST.
- Web SmartPot: Interfaz de usuario (frontend) construida con React.
- Mail SmartPot: Servicio local de pruebas para envío de correos.
Encargada de almacenar toda la información relacionada con usuarios, cultivos y sensores.
db-smartpot:
image: sebastian190030/db-smartpot:latest
container_name: smartpot-db
ports:
- "27018:27017"
volumes:
- mongo_data:/data/db
env_file:
- .env.db- Puerto Externo:
27018 - Datos Persistentes: Volumen
mongo_data - Configuración: Variables desde
.env.db
Proporciona almacenamiento en memoria para mejorar la respuesta del sistema y reducir la carga en la base de datos.
cache-smartpot:
image: sebastian190030/cache-smartpot:latest
container_name: smartpot-cache
ports:
- "6379:6379"
env_file:
- .env.cache- Puerto Externo:
6379 - Configuración: Variables desde
.env.cache
Servicio de correo para desarrollo, útil para pruebas locales sin depender de servidores externos.
mail-smartpot:
image: sebastian190030/mail-smartpot:latest
container_name: smartpot-mail
ports:
- "8025:8025" # GUI port
- "1025:1025" # SMTP Port
env_file:
- .env.mail
command:
- "--smtp-auth-file=/etc/mailpit/authfile"
- "--smtp-auth-allow-insecure"- Puerto SMTP:
1025 - Interfaz Web:
8025 - Acceso GUI: http://:8025
Gestiona la lógica principal del sistema, la autenticación y la comunicación con la base de datos y Redis.
api-smartpot:
image: sebastian190030/api-smartpot:latest
container_name: smartpot-api
ports:
- "8091:8091"
depends_on:
- db-smartpot
- cache-smartpot
- mail-smartpot
env_file:
- .env.api- Puerto Externo:
8091 - Depende de:
db-smartpot,cache-smartpot - Configuración: Variables desde
.env.api
Aplicación web de interfaz de usuario, que consume la API para mostrar datos y controlar los dispositivos.
web-smartpot:
image: sebastian190030/web-smartpot:latest
container_name: smartpot-web
ports:
- "5173:5173"
depends_on:
- api-smartpot
env_file:
- .env.web- Puerto Externo:
5173 - Depende de:
api-smartpot - Configuración: Variables desde
.env.web
volumes:
mongo_data:
networks:
network:
driver: bridge- Volumen
mongo_data: Mantiene los datos de MongoDB de forma persistente. - Red
network: Permite la comunicación interna entre los servicios de SmartPot.
Una vez desplegado el entorno, podrás acceder a:
- MongoDB →
mongodb://<user>:<password>@<host>:27018/smartpot - API SmartPot →
http://<host>:8091 - Web SmartPot →
http://<host>:5173