feat(deploy): implement standalone docker deployment pattern
Some checks are pending
Deploy Core (Dashboard & Identity Gateway) / deploy-dev (push) Waiting to run

- Added Dashboard Dockerfile
- Created deploy-core.sh script for container management without compose
- Following gohorsejobs infrastructure pattern

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root 2026-03-09 20:38:41 +01:00
parent e3d198c792
commit c06d785832
2 changed files with 85 additions and 0 deletions

25
dashboard/Dockerfile Normal file
View file

@ -0,0 +1,25 @@
# Stage 1: Build
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# Variáveis dummy para o build não falhar (se necessário)
ENV ZITADEL_ISSUER=http://localhost:8080
ENV ZITADEL_CLIENT_ID=dummy
ENV ZITADEL_CLIENT_SECRET=dummy
ENV NEXTAUTH_SECRET=dummy
RUN npm run build
# Stage 2: Run
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/public ./public
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json
COPY --from=builder /app/.env.local ./.env.local
EXPOSE 3000
CMD ["npm", "start"]

60
deploy-core.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/bash
# Configurações
PROJECT_NAME="rede5-core"
NETWORK_NAME="core-network"
DB_CONTAINER="ghj-db-dev" # Usando o banco existente conforme solicitado
ZITADEL_IMAGE="ghcr.io/zitadel/zitadel:v2.42.2"
DASHBOARD_IMAGE="rede5-dashboard:latest"
MASTERKEY="MasterkeyNeedsToHave32Characters"
echo "🚀 Iniciando Deploy do Core ($PROJECT_NAME)"
# 1. Criar rede se não existir
docker network inspect $NETWORK_NAME >/dev/null 2>&1 || \
docker network create $NETWORK_NAME
# 2. Conectar o banco existente à rede (se ainda não estiver)
docker network connect $NETWORK_NAME $DB_CONTAINER 2>/dev/null || true
# 3. Setup do Zitadel (Passo inicial)
echo "⚙️ Executando Setup do Zitadel..."
docker run --rm \
--network $NETWORK_NAME \
-v /root/zitadel-config.yaml:/zitadel-config.yaml:ro \
$ZITADEL_IMAGE \
setup --masterkey "$MASTERKEY" --config /zitadel-config.yaml
# 4. Iniciar Zitadel
echo "🔐 Iniciando Zitadel..."
docker stop zitadel 2>/dev/null || true
docker rm zitadel 2>/dev/null || true
docker run -d \
--name zitadel \
--network $NETWORK_NAME \
-p 8080:8080 \
-v /root/zitadel-config.yaml:/zitadel-config.yaml:ro \
-e ZITADEL_MASTERKEY="$MASTERKEY" \
$ZITADEL_IMAGE \
start-from-setup --masterkey "$MASTERKEY" --config /zitadel-config.yaml
# 5. Build do Dashboard
echo "🏗️ Building Dashboard Image..."
cd dashboard
docker build -t $DASHBOARD_IMAGE .
cd ..
# 6. Iniciar Dashboard
echo "🖥️ Iniciando Dashboard..."
docker stop core-dashboard 2>/dev/null || true
docker rm core-dashboard 2>/dev/null || true
docker run -d \
--name core-dashboard \
--network $NETWORK_NAME \
-p 3005:3000 \
--env-file dashboard/.env.local \
$DASHBOARD_IMAGE
echo "✅ Deploy Concluído!"
echo "Auth: http://auth.rede5.com.br (Porta 8080)"
echo "Dashboard: http://dashboard.rede5.com.br (Porta 3005)"