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