Este repositorio contiene el código para el portfolio personal de Esteban Kroh, construido con SvelteKit y desplegado usando Docker. Lo pueden encontrar online en www.estebankroh.com
Para correr el contenedor en desarrollo ejecutar los siguientes comandos:
cp .env.example .env
docker compose build
docker compose up devPara correr el contenedor en producción ejecutar los siguientes comandos:
cp .env.example .env
docker compose build
docker compose up -d prod certbot nginxInstalar las dependencias del package.json para que no tire errores en el IDE:
docker compose run --rm cli yarn installRevisar el formato del código con Prettier y ESLint:
docker compose run --rm cli yarn lintFormatear el código automáticamente con Prettier:
docker compose run --rm cli yarn formatRevisar las versiones de las dependencias del package.json:
docker compose run --rm cli ncuRevisar las versiones de las dependencias globales:
docker compose run --rm cli ncu -gActualizar todas las dependencias del package.json:
docker compose run --rm cli ncu -uRevisa los errores ortográficos (check spelling)
docker compose run --rm cli cspell "./"Ejecutar las pruebas (integración y unitarias):
docker compose run --rm cli yarn testEjecutar únicamente pruebas de integración:
docker compose run --rm cli yarn test:integrationEjecutar únicamente pruebas unitarias:
docker compose run --rm cli yarn test:unitA continuación, se detalla cómo está configurado el entorno de desarrollo y producción, así como los aspectos relacionados con el manejo de SSL con Certbot y Nginx a modo de recordatorio para un futuro.
El Dockerfile define las siguientes etapas de construcción:
- Etapa de Construcción (builder):
- Usa node:alpine para construir la aplicación.
- Instala dependencias y construye el proyecto.
- Etapa de Desarrollo (dev):
- Basado en la etapa de construcción.
- Configura el entorno para desarrollo y expone el puerto 5173.
- Etapa de Producción (prod):
- Basado en la etapa de construcción.
- Prepara el entorno de producción y expone el puerto 3000.
- Servidor Nginx (nginx):
- Usa la imagen base de nginx:alpine.
- Copia el archivo de configuración y el script de inicio.
- Utiliza envsubst en el script de inicio para reemplazar variables de entorno en la configuración de Nginx.
El archivo compose.yaml define los siguientes servicios:
- cli:
- Utiliza la etapa builder para ejecutar comandos en el contenedor.
- Configurado para montar el código y las dependencias del proyecto.
- dev:
- Utiliza la etapa dev para desarrollo.
- Expone el puerto 5173 para la aplicación en desarrollo.
- prod:
- Utiliza la etapa prod para producción.
- Expone el puerto 3000 para la aplicación en producción.
- nginx:
- Utiliza la etapa nginx del Dockerfile para configurar Nginx.
- Monta volúmenes para la configuración de Nginx, los certificados SSL y el directorio de Certbot.
- Expone los puertos 80 y 443 para HTTP y HTTPS.
- Depende del servicio prod y certbot para asegurarse de que la aplicación esté lista antes de iniciar Nginx.
- certbot:
- Usa la imagen oficial de certbot/certbot.
- Monta volúmenes para los certificados y el directorio web.
- Ejecuta un comando para renovar automáticamente los certificados SSL.
- nginx/nginx.conf:
- Configura Nginx para manejar las solicitudes HTTP y HTTPS.
- Usa variables de entorno para configurar el nombre de dominio y los certificados SSL.
- nginx/start.sh:
- Reemplaza las variables de entorno en la plantilla de configuración de Nginx.
- Inicia Nginx en primer plano.
- .cspell.json:
- Configuración básica de cspell check para que detecte errores en español.
- Wild list de palabras utilizadas en el proyecto.