feat: agregar docker-compose para backend y worker
This commit is contained in:
commit
907cd4a68e
6 changed files with 246 additions and 0 deletions
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Environment variables (contienen secretos)
|
||||
.env
|
||||
|
||||
# Docker
|
||||
*.log
|
||||
docker-compose.override.yml
|
||||
139
README.md
Normal file
139
README.md
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
# Deploy Manual - Paquetería
|
||||
|
||||
## Prerrequisitos
|
||||
|
||||
- Docker y Docker Compose instalados
|
||||
- Acceso SSH al servidor
|
||||
- Git instalado en el servidor
|
||||
|
||||
## Estructura en el servidor
|
||||
|
||||
```
|
||||
/home/dillus/
|
||||
├── repos/ ← Código fuente (clonado de Forgejo)
|
||||
│ ├── app-paqueteria-nest/
|
||||
│ │ ├── src/
|
||||
│ │ └── Dockerfile
|
||||
│ ├── app-paqueteria-worker/
|
||||
│ │ ├── src/
|
||||
│ │ └── Dockerfile
|
||||
│ └── docker/ ← Archivos de deploy
|
||||
│ ├── paqueteria-nest/
|
||||
│ │ ├── docker-compose.yml
|
||||
│ │ └── .env
|
||||
│ └── paqueteria-worker/
|
||||
│ ├── docker-compose.yml
|
||||
│ └── .env
|
||||
│
|
||||
└── Dockge administra /home/dillus/repos/docker/
|
||||
```
|
||||
|
||||
## Paso 1: Clonar repositorios
|
||||
|
||||
```bash
|
||||
cd /home/dillus/repos
|
||||
|
||||
# Clonar desde Forgejo
|
||||
git clone http://git.alphaxdev.cc/dillus/app-paqueteria-nest.git
|
||||
git clone http://git.alphaxdev.cc/dillus/app-paqueteria-worker.git
|
||||
git clone http://git.alphaxdev.cc/dillus/docker.git
|
||||
```
|
||||
|
||||
## Paso 2: Configurar variables de entorno
|
||||
|
||||
```bash
|
||||
cd /home/dillus/repos/docker/paqueteria-nest
|
||||
cp .env.example .env
|
||||
nano .env # Editar con valores reales
|
||||
|
||||
cd /home/dillus/repos/docker/paqueteria-worker
|
||||
cp .env.example .env
|
||||
nano .env # Editar con valores reales
|
||||
```
|
||||
|
||||
## Paso 3: Deploy con Dockge
|
||||
|
||||
1. Abrir Dockge en `http://tu-servidor:5000`
|
||||
2. Configurar la ruta de los stacks en Dockge Settings:
|
||||
- Path: `/home/dillus/repos/docker`
|
||||
3. Los stacks aparecerán automáticamente
|
||||
4. Hacer clic en "Pull & Start" en cada stack
|
||||
|
||||
## Paso 4: Deploy manual (sin Dockge)
|
||||
|
||||
```bash
|
||||
# Backend (incluye PostgreSQL)
|
||||
cd /home/dillus/repos/docker/paqueteria-nest
|
||||
docker compose up -d --build
|
||||
|
||||
# Worker
|
||||
cd /home/dillus/repos/docker/paqueteria-worker
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
## Paso 5: Verificar
|
||||
|
||||
```bash
|
||||
# Ver logs
|
||||
docker logs paqueteria-nest -f
|
||||
docker logs paqueteria-worker -f
|
||||
|
||||
# Verificar que corren
|
||||
docker ps | grep paqueteria
|
||||
```
|
||||
|
||||
## Paso 6: Configurar Nginx Proxy Manager
|
||||
|
||||
En la UI de NPM, crear proxy hosts:
|
||||
|
||||
### Backend API
|
||||
- Domain: `api.alphaxdev.cc`
|
||||
- Forward to: `paqueteria-nest:3000`
|
||||
- WebSocket: Sí
|
||||
- SSL: Let's Encrypt
|
||||
|
||||
### OpenWA (ya configurado)
|
||||
- Domain: `whatsapp.alphaxdev.cc`
|
||||
- Forward to: `whatsapp-host:2785`
|
||||
|
||||
## Actualizaciones
|
||||
|
||||
```bash
|
||||
# Pull cambios
|
||||
cd /home/dillus/repos/app-paqueteria-nest
|
||||
git pull
|
||||
|
||||
# Rebuild y deploy
|
||||
cd /home/dillus/repos/docker/paqueteria-nest
|
||||
docker compose up -d --build
|
||||
|
||||
# Repetir para worker
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
```bash
|
||||
# Ver logs de un servicio
|
||||
docker logs paqueteria-nest -f --tail 100
|
||||
|
||||
# Entrar al contenedor
|
||||
docker exec -it paqueteria-nest sh
|
||||
|
||||
# Verificar conexión a DB
|
||||
docker exec -it postgres-dev psql -U postgres -d paqueteria
|
||||
|
||||
# Reiniciar un servicio
|
||||
cd /home/dillus/repos/docker/paqueteria-nest
|
||||
docker compose restart paqueteria-nest
|
||||
```
|
||||
|
||||
## Archivos en git
|
||||
|
||||
### Subir a git ✓
|
||||
- `Dockerfile` (en cada proyecto)
|
||||
- `docker-compose.yml`
|
||||
- `.env.example`
|
||||
- `README.md`
|
||||
|
||||
### NO subir a git ✗
|
||||
- `.env` (contiene contraseñas)
|
||||
31
paqueteria-nest/.env.example
Normal file
31
paqueteria-nest/.env.example
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Database
|
||||
DB_HOST=paqueteria-db
|
||||
DB_PORT=5432
|
||||
DB_USERNAME=postgres
|
||||
DB_PASSWORD=postgres
|
||||
DB_NAME=paqueteria
|
||||
|
||||
# JWT
|
||||
JWT_SECRET=tu-jwt-secret-aqui
|
||||
JWT_EXPIRATION=15d
|
||||
|
||||
# API Key
|
||||
API_KEY=tu-api-key-aqui
|
||||
|
||||
# OCR Provider (tesseract | ocrspace | google-vision | mimo)
|
||||
OCR_PROVIDER=mimo
|
||||
|
||||
# mimo key (si OCR_PROVIDER=mimo)
|
||||
MIMO_API_KEY=tu-mimo-key-aqui
|
||||
|
||||
# Worker
|
||||
WORKER_KEY=tu-worker-key-aqui
|
||||
|
||||
# App
|
||||
PORT=3000
|
||||
|
||||
# Logo Empresa
|
||||
EMPRESA_LOGO_MAX_SIZE=200
|
||||
EMPRESA_LOGO_WIDTH=400
|
||||
EMPRESA_LOGO_HEIGHT=400
|
||||
EMPRESA_LOGO_QUALITY=80
|
||||
40
paqueteria-nest/docker-compose.yml
Normal file
40
paqueteria-nest/docker-compose.yml
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
services:
|
||||
paqueteria-nest:
|
||||
build:
|
||||
context: ${NEST_CONTEXT:-../app-paqueteria-nest}
|
||||
dockerfile: Dockerfile
|
||||
container_name: paqueteria-nest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- uploads_data:/app/uploads
|
||||
networks:
|
||||
- paqueteria-net
|
||||
depends_on:
|
||||
- paqueteria-db
|
||||
|
||||
paqueteria-db:
|
||||
image: postgres:16-alpine
|
||||
container_name: postgres-dev
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
POSTGRES_DB: ${DB_NAME:-paqueteria}
|
||||
POSTGRES_USER: ${DB_USERNAME:-postgres}
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres}
|
||||
volumes:
|
||||
- pg_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- paqueteria-net
|
||||
|
||||
volumes:
|
||||
pg_data:
|
||||
uploads_data:
|
||||
|
||||
networks:
|
||||
paqueteria-net:
|
||||
driver: bridge
|
||||
13
paqueteria-worker/.env.example
Normal file
13
paqueteria-worker/.env.example
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# API Principal
|
||||
API_URL=http://paqueteria-nest:3000/v1
|
||||
|
||||
# API KEY para conectar con el API principal
|
||||
WORKER_KEY=tu-worker-key-aqui
|
||||
|
||||
# OpenWA
|
||||
OPENWA_URL=https://whatsapp.alphaxdev.cc
|
||||
OPENWA_API_KEY=tu-openwa-api-key-aqui
|
||||
|
||||
# Configuración del worker
|
||||
WORKER_INTERVAL=3000
|
||||
PORT=3001
|
||||
17
paqueteria-worker/docker-compose.yml
Normal file
17
paqueteria-worker/docker-compose.yml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
services:
|
||||
paqueteria-worker:
|
||||
build:
|
||||
context: ${WORKER_CONTEXT:-../app-paqueteria-worker}
|
||||
dockerfile: Dockerfile
|
||||
container_name: paqueteria-worker
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3001:3001"
|
||||
env_file:
|
||||
- .env
|
||||
networks:
|
||||
- paqueteria-net
|
||||
|
||||
networks:
|
||||
paqueteria-net:
|
||||
driver: bridge
|
||||
Loading…
Add table
Reference in a new issue