Este proyecto expone una API mínima con Express que devuelve la hora actual en formato ISO a través de GET /api/time. Incluye Dockerfile y docker-compose.yml para construir y ejecutar en contenedores.
GET /api/time: retorna{ "time": "<ISO>" }GET /oGET /health: healthcheck{ "status": "ok" }
cd 'C:\Users\Uriel Sabugo\Desktop\docker\docker'
docker compose up -d --build
curl.exe -s http://localhost:3000/api/timePara detener:
docker compose downserver.js: servidor Express con las rutas.package.json: metadatos y dependencias (Express).Dockerfile: instrucciones para empaquetar la app en una imagen.docker-compose.yml: orquesta el contenedor y mapea puertos.
server.js: inicia Express, define/api/time,/y/health, maneja 404 y escucha enPORT.Dockerfile:- Usa
node:20-alpine(imagen ligera). - Define
WORKDIR /app. - Copia
package.jsone instala dependencias de producción. - Copia
server.js. - Expone
PORT=3000y ejecutanpm start.
- Usa
docker-compose.yml:- Construye la imagen localmente.
- Mapea
3000:3000para acceder desde el host. - Pasa
PORT=3000al contenedor. - Configura reinicio
unless-stopped.
- Puedes abrir el navegador en
http://localhost:3000/api/timepara ver el JSON. - Si cambias el puerto, ajusta
portsy la variablePORTen el compose.
Puedes desplegar con un clic usando el archivo render.yaml en la raíz. Pasos:
- Haz push del repo a GitHub.
- Entra a
https://dashboard.render.com/, clic en New → Blueprint → Conecta el repo. - Render detectará
render.yaml(conrootDir: docker) y creará un Web Service Node. - Variables preconfiguradas:
TIMEZONE=America/Argentina/Buenos_Aires(ajústala a gusto)PORTlo define Render (ya usamosprocess.env.PORT). En la blueprint está en 10000 por compatibilidad.
- Crear servicio. Al terminar, visitar
https://<tu-app>.onrender.com/api/time.