Añadir compose para producción con Traefik/Portainer
- docker-compose.portainer.yml: Nginx alpine con labels Traefik, volúmenes en /var/volumes/web_jailgames/, red web externa - README: flujo de despliegue online (rsync + Portainer), alternativa Apache VirtualHost Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -85,7 +85,75 @@ npm run clean
|
||||
|
||||
---
|
||||
|
||||
## Despliegue con Docker
|
||||
## Despliegue en producción (servidor con Traefik + Portainer)
|
||||
|
||||
Usa `docker-compose.portainer.yml`. El flujo de trabajo es:
|
||||
|
||||
**1. Preparar el servidor (primera vez):**
|
||||
```bash
|
||||
# En el servidor, crear la estructura de volúmenes
|
||||
mkdir -p /var/volumes/web_jailgames/html
|
||||
mkdir -p /var/volumes/web_jailgames/nginx
|
||||
|
||||
# Copiar la configuración de Nginx
|
||||
cp nginx.conf /var/volumes/web_jailgames/nginx/default.conf
|
||||
```
|
||||
|
||||
**2. Build y subida del sitio (cada actualización):**
|
||||
```bash
|
||||
# En tu máquina de desarrollo
|
||||
npm run build
|
||||
|
||||
# Subir _site/ al servidor (ajusta usuario e IP)
|
||||
rsync -avz --delete _site/ usuario@servidor:/var/volumes/web_jailgames/html/
|
||||
|
||||
# Subir descargas (binarios de juegos)
|
||||
rsync -avz downloads/ usuario@servidor:/var/volumes/web_jailgames/html/downloads/
|
||||
```
|
||||
|
||||
**3. Desplegar en Portainer:**
|
||||
- En Portainer → Stacks → Add stack
|
||||
- Pegar el contenido de `docker-compose.portainer.yml`
|
||||
- Ajustar el dominio en las labels de Traefik si es necesario
|
||||
- Deploy
|
||||
|
||||
El sitio quedará disponible en `https://jailgames.sustancia.synology.me`.
|
||||
|
||||
---
|
||||
|
||||
## Alternativa: dentro de Apache existente
|
||||
|
||||
Si prefieres añadirlo como un VirtualHost más en tu Apache actual, solo necesitas copiar `_site/` al directorio del servidor y configurar el VirtualHost. No hace falta contenedor extra.
|
||||
|
||||
```bash
|
||||
# Build local
|
||||
npm run build
|
||||
|
||||
# Copiar al volumen de Apache (ajusta la ruta)
|
||||
rsync -avz --delete _site/ usuario@servidor:/var/volumes/apache/html/jailgames/
|
||||
rsync -avz downloads/ usuario@servidor:/var/volumes/apache/html/jailgames/downloads/
|
||||
```
|
||||
|
||||
Luego añade en Apache:
|
||||
```apache
|
||||
<VirtualHost *:80>
|
||||
ServerName jailgames.sustancia.synology.me
|
||||
DocumentRoot /usr/local/apache2/htdocs/jailgames
|
||||
|
||||
<Directory /usr/local/apache2/htdocs/jailgames>
|
||||
Options -Indexes
|
||||
AllowOverride None
|
||||
Require all granted
|
||||
|
||||
# Rutas limpias (equivalente al try_files de Nginx)
|
||||
FallbackResource /jailgames/404.html
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Despliegue local (desarrollo)
|
||||
|
||||
```bash
|
||||
docker compose up --build -d
|
||||
@@ -93,33 +161,6 @@ docker compose up --build -d
|
||||
|
||||
Acceder en [http://localhost](http://localhost).
|
||||
|
||||
Para detener:
|
||||
```bash
|
||||
docker compose down
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Despliegue sin internet (ferias)
|
||||
|
||||
**En la máquina con internet:**
|
||||
```bash
|
||||
docker compose build
|
||||
docker save jailgames-web:latest | gzip > jailgames-image.tar.gz
|
||||
```
|
||||
|
||||
**Copiar** `jailgames-image.tar.gz` al portátil de la feria (USB).
|
||||
|
||||
**En el portátil de la feria (sin internet):**
|
||||
```bash
|
||||
gunzip -c jailgames-image.tar.gz | docker load
|
||||
docker run -d -p 80:80 \
|
||||
-v /ruta/local/downloads:/usr/share/nginx/html/downloads:ro \
|
||||
--name jailgames jailgames-web:latest
|
||||
```
|
||||
|
||||
Abrir [http://localhost](http://localhost) en cualquier navegador.
|
||||
|
||||
---
|
||||
|
||||
## Estructura de carpetas
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
services:
|
||||
jailgames:
|
||||
container_name: jailgames
|
||||
hostname: jailgames
|
||||
image: nginx:alpine
|
||||
|
||||
volumes:
|
||||
- jailgames-html:/usr/share/nginx/html:ro
|
||||
- jailgames-nginx:/etc/nginx/conf.d:ro
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
networks:
|
||||
- web
|
||||
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=web
|
||||
- traefik.http.routers.jailgames.rule=Host(`jailgames.sustancia.synology.me`)
|
||||
- traefik.http.routers.jailgames.tls=true
|
||||
- traefik.http.routers.jailgames.tls.certresolver=letsencrypt
|
||||
- traefik.http.services.jailgames.loadbalancer.server.scheme=http
|
||||
- traefik.http.services.jailgames.loadbalancer.server.port=80
|
||||
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-qO-", "http://localhost/"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
jailgames-html:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: /var/volumes/web_jailgames/html
|
||||
|
||||
jailgames-nginx:
|
||||
driver: local
|
||||
driver_opts:
|
||||
o: bind
|
||||
type: none
|
||||
device: /var/volumes/web_jailgames/nginx
|
||||
|
||||
networks:
|
||||
web:
|
||||
external: true
|
||||
Reference in New Issue
Block a user