-API RESTful de autenticación construida con Node.js, Express, bcrypt, JWT y SQL.
-Esta API permite realizar operaciones CRUD y autenticación de usuarios. Utiliza Docker para la contenedorización, Amazon RDS para la base de datos y Amazon EC2 para el despliegue. Además, incluye un flujo de trabajo CI/CD para el despliegue automático.
- Registro de usuarios: Permite a los usuarios registrarse con una contraseña segura.
- Autenticación de usuarios: Los usuarios pueden iniciar sesión y recibir un token JWT.
- Operaciones CRUD: Permite crear, leer, actualizar y eliminar recursos en la base de datos.
- Seguridad: Las contraseñas se almacenan de manera segura utilizando bcrypt.
- Contenedorización: Utiliza Docker para la gestión de contenedores.
- Base de Datos en la Nube: Utiliza Amazon RDS para el almacenamiento de datos.
- Despliegue en la Nube: Utiliza Amazon EC2 para alojar la aplicación.
- CI/CD: Implementación continua y despliegue continuo utilizando GitHub Actions.
- Node.js instalado
- Docker instalado
- Cuenta de AWS con acceso a RDS y EC2
- MySQL u otro sistema de gestión de bases de datos SQL instalado (opcional para desarrollo local)
- Postman u otra herramienta para probar la API
-
Clona el repositorio:
git clone https://github.com/tu-usuario/EC2-api-sql.git cd EC2-api-sql -
Instala las dependencias:
npm install
-
Configura la base de datos:
- Crea una base de datos en Amazon RDS.
- Ejecuta el script SQL para crear las tablas necesarias (ver archivo
schema.sql). - Configura las credenciales de la base de datos en el archivo
.env(ver sección Configuración).
-
Configura las variables de entorno: Crea un archivo
.enven la raíz del proyecto con las siguientes variables:DB_HOST=nombre_del_host_de_tu_rds DB_USER=tu_usuario DB_PASSWORD=tu_contraseña DB_NAME=nombre_de_tu_base_de_datos JWT_SECRET=tu_secreto_jwt
-
Inicia el servidor usando Docker:
docker build -t ec2-api-sql . docker run -p 3000:3000 --env-file .env ec2-api-sql
- Configura una instancia de EC2 en tu cuenta de AWS.
- Conéctate a la instancia y clona el repositorio.
- Instala Docker en la instancia de EC2.
- Sigue los pasos de instalación usando Docker descritos anteriormente en la instancia de EC2.
Este proyecto utiliza GitHub Actions para CI/CD. El flujo de trabajo está definido en .github/workflows/deploy.yml.
- El flujo de trabajo se activa en cada push a la rama principal.
- Construye la imagen de Docker y la despliega en la instancia de EC2.
Asegúrate de configurar los secretos de GitHub Actions en tu repositorio (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, EC2_HOST, EC2_USER, etc.).
