Deployment
Guía para desplegar Bizflow ERP en diferentes entornos.
Docker Compose (Auto-hosting)
La forma más sencilla de desplegar es con Docker Compose.
Preparación
bash
# Clonar en servidor
git clone https://github.com/jdomdev/bizflow-erp-springboot-react-docker.git
cd bizflow-erp-springboot-react-docker
# Configurar variables de producción
cp .env.example .env
nano .envVariables de producción
env
# Base de datos
POSTGRES_PASSWORD=contraseña_muy_segura_produccion
POSTGRES_DB=erp_prod_db
# JWT
JWT_SECRET=clave_secreta_produccion_minimo_32_caracteres
# URLs
BACKEND_URL=https://api.tudominio.com
FRONTEND_URL=https://app.tudominio.comIniciar producción
bash
docker compose --profile prod up -dVerificar
bash
docker compose ps
curl http://localhost:8181/api/v1/healthCloud Platforms
Railway
- Crear cuenta en Railway
- Nuevo proyecto → Deploy from GitHub
- Seleccionar repositorio
- Configurar variables de entorno
- Railway detectará el Dockerfile
Render
- Crear cuenta en Render
- New → Web Service
- Conectar repositorio
- Configurar:
- Build Command:
cd backend && ./mvnw package -DskipTests - Start Command:
java -jar backend/target/*.jar
- Build Command:
- Añadir PostgreSQL desde Render Dashboard
DigitalOcean App Platform
- Crear App desde GitHub
- Configurar componentes:
- Backend: Docker
- Frontend: Static Site
- Database: PostgreSQL
- Configurar variables de entorno
- Deploy
Kubernetes
Manifiestos básicos
yaml
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: bizflow-backend
spec:
replicas: 2
selector:
matchLabels:
app: bizflow-backend
template:
metadata:
labels:
app: bizflow-backend
spec:
containers:
- name: backend
image: bizflow/backend:latest
ports:
- containerPort: 8080
env:
- name: SPRING_PROFILES_ACTIVE
value: "prod"
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: bizflow-secrets
key: database-urlyaml
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: bizflow-backend
spec:
selector:
app: bizflow-backend
ports:
- port: 80
targetPort: 8080
type: ClusterIPCI/CD con GitHub Actions
Workflow de ejemplo
yaml
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Build backend
run: cd backend && ./mvnw package -DskipTests
- name: Build Docker image
run: docker build -t bizflow/backend:${{ github.sha }} ./backend
- name: Push to registry
run: docker push bizflow/backend:${{ github.sha }}Checklist de Producción
- [ ] Variables de entorno seguras (no en código)
- [ ] JWT_SECRET de al menos 32 caracteres
- [ ] HTTPS configurado
- [ ] Base de datos con backups automáticos
- [ ] Logs centralizados
- [ ] Monitoreo y alertas
- [ ] Pruebas de carga realizadas
- [ ] Plan de rollback documentado