4.2 KiB
4.2 KiB
Infinity — Despliegue con Docker
Esta guía explica cómo llevar el proyecto a cualquier PC con Docker, usando Gitea como origen del código.
Requisitos en el PC destino
- Docker instalado y corriendo.
- Docker Compose instalado (normalmente viene con Docker Desktop; en Linux puede ser el plugin
docker compose). - Git (para clonar desde Gitea).
Estructura del proyecto
.
├── backend/ # Código del servidor Node.js/Express
│ ├── Dockerfile
│ ├── docker-entrypoint.sh
│ ├── package.json
│ └── server.js
├── frontend/ # Archivos estáticos del catálogo y panel admin
├── data/ # JSONs persistentes (categorías, productos, usuarios...)
├── Imagenes/ # Fotos de productos
├── pedidos/ # PDFs de pedidos
├── videos/ # Videos del catálogo
├── agotados/ # Imágenes de productos agotados
├── docker-compose.yml
└── .dockerignore
Pasos para ponerlo a correr en otro PC
1. Clonar el repositorio desde Gitea
git clone https://TU_GITEA/TU_USUARIO/infinity.git
cd infinity
2. Levantar el contenedor
docker compose up --build -d
- Construye la imagen con el backend y el frontend empaquetados.
- Expone la aplicación en: http://localhost:6060
- Persiste
data/,Imagenes/,pedidos/yvideos/en el host.
3. Abrir en el navegador
- Catálogo público: http://localhost:6060
- Panel administrativo: http://localhost:6060/administrativo/
Usuario por defecto (solo si no existe data/contraseñas.json)
| Campo | Valor |
|---|---|
| Usuario | admin |
| Contraseña | admin |
Cambia esta contraseña desde el panel administrativo lo antes posible.
Flujo de trabajo: editar en este PC y actualizar el otro
- Haces los cambios en el código/frontend.
- Subes a Gitea:
git add . git commit -m "descripción del cambio" git push origin main - En el otro PC:
cd infinity git pull docker compose down docker compose up --build -d
Con eso se actualiza tanto el backend como el frontend.
Datos importantes: qué se guarda y qué no
Lo que sí se conserva al reconstruir el contenedor (está en volúmenes):
data/→ JSONs (productos, categorías, usuarios, sesiones...)Imagenes/→ fotos subidaspedidos/→ PDFs generadosvideos/→ videos subidos
Lo que no se conserva (va dentro de la imagen):
- El código del frontend y backend. Si lo actualizas, hay que hacer
docker compose up --build -d.
Comandos útiles
| Acción | Comando |
|---|---|
| Ver logs | docker compose logs -f web |
| Reiniciar | docker compose restart web |
| Apagar | docker compose down |
| Borrar TODO (incluidos datos locales) | docker compose down -v ⚠️ |
| Ver estado | docker compose ps |
Solución de problemas
"Cannot GET /" o pantalla en blanco
- Verifica que el contenedor esté corriendo:
docker compose ps - Mira los logs:
docker compose logs -f web - Asegúrate de haber usado
--builddespués degit pull.
El admin no entra
- Si la carpeta
data/estaba vacía, se crea automáticamente el usuarioadmin/admin. - Si ya existe
data/contraseñas.json, ese archivo tiene prioridad.
Las imágenes o pedidos no aparecen
- Confirma que las carpetas
Imagenes/,pedidos/yvideos/están en la misma ubicación quedocker-compose.yml. - En Windows con Docker Desktop, activa Settings → Resources → File sharing para la unidad donde esté el proyecto.
Notas de seguridad
- Cambia
SESSION_SECRETendocker-compose.ymlpor algo aleatorio y largo si vas a exponer el sitio a internet. - El proyecto está pensado para red local / catálogo interno. No expongas el puerto 6060 a internet sin un reverse proxy (nginx/traefik) y HTTPS.
¿Por qué se empaqueta el frontend dentro de la imagen?
Así, cuando subes cambios a Gitea y haces git pull + --build en el otro PC, el frontend se actualiza automáticamente. Si se montara frontend/ como volumen, el contenedor usaría siempre los archivos antiguos que ya estuvieran en el disco.