137 lines
4.2 KiB
Markdown
137 lines
4.2 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
git clone https://TU_GITEA/TU_USUARIO/infinity.git
|
|
cd infinity
|
|
```
|
|
|
|
### 2. Levantar el contenedor
|
|
|
|
```bash
|
|
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/` y `videos/` 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
|
|
|
|
1. Haces los cambios en el código/frontend.
|
|
2. Subes a Gitea:
|
|
```bash
|
|
git add .
|
|
git commit -m "descripción del cambio"
|
|
git push origin main
|
|
```
|
|
3. En el otro PC:
|
|
```bash
|
|
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 subidas
|
|
- `pedidos/` → PDFs generados
|
|
- `videos/` → 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
|
|
|
|
1. Verifica que el contenedor esté corriendo:
|
|
```bash
|
|
docker compose ps
|
|
```
|
|
2. Mira los logs:
|
|
```bash
|
|
docker compose logs -f web
|
|
```
|
|
3. Asegúrate de haber usado `--build` después de `git pull`.
|
|
|
|
### El admin no entra
|
|
|
|
- Si la carpeta `data/` estaba vacía, se crea automáticamente el usuario `admin`/`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/` y `videos/` están en la misma ubicación que `docker-compose.yml`.
|
|
- En Windows con Docker Desktop, activa **Settings → Resources → File sharing** para la unidad donde esté el proyecto.
|
|
|
|
## Notas de seguridad
|
|
|
|
- Cambia `SESSION_SECRET` en `docker-compose.yml` por 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.
|