From 5226da644cb198beaee6670d0d3294e3d204cc05 Mon Sep 17 00:00:00 2001 From: Nurfog Date: Mon, 6 Apr 2026 15:08:36 -0400 Subject: [PATCH] fix(deploy): resolver 502 CMS remoto y estandarizar buildx/s3 - corrige host remoto de deploy y automatiza buildx en servidor - agrega configuracion S3 (bucket openccb-802726101181-us-east-2-an) - actualiza Dockerfile de studio a rust:1-bookworm para evitar error GLIBC - activa cache mounts de buildkit para cargo/npm en studio --- .env.example | 9 +++++++++ deploy.sh | 21 +++++++++++++++++++-- web/studio/Dockerfile | 18 ++++++++++++------ 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/.env.example b/.env.example index 8afea26..8e7edb7 100644 --- a/.env.example +++ b/.env.example @@ -56,6 +56,15 @@ MYSQL_DATABASE_URL=mysql://db_user:db_password@host:3306/database_name EXTERNAL_TABLE_GRADES=notas EXTERNAL_ID_TIPO_NOTA=1 +# ---------------------------------------- +# AWS S3 Configuration (audio storage) +# Bucket: openccb-802726101181-us-east-2-an +# ---------------------------------------- +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_REGION=us-east-2 +S3_BUCKET=openccb-802726101181-us-east-2-an + # ---------------------------------------- # Mercado Pago Configuration # ---------------------------------------- diff --git a/deploy.sh b/deploy.sh index 92e1397..fd98431 100755 --- a/deploy.sh +++ b/deploy.sh @@ -2,7 +2,7 @@ # OpenCCB Unified Deployment Script # Despliegue automático en AWS EC2 con SSL (Let's Encrypt) -# Servidor: ec2-18-224-137-67.us-east-2.compute.amazonaws.com +# Servidor: ec2-18-118-158-99.us-east-2.compute.amazonaws.com # Dominios: studio.norteamericano.com, learning.norteamericano.com set -e @@ -17,7 +17,7 @@ echo "" # ============================================================================ PEM_PATH="ubuntu.pem" REMOTE_USER="ubuntu" -REMOTE_HOST="ec2-18-224-137-67.us-east-2.compute.amazonaws.com" +REMOTE_HOST="ec2-18-118-158-99.us-east-2.compute.amazonaws.com" REMOTE_PATH="/var/www/openccb" # Cambiar a "false" para usar Let's Encrypt production (solo después de rate limits) LETSENCRYPT_STAGING="true" @@ -434,6 +434,23 @@ sed -i "/^NEXT_PUBLIC_LMS_API_URL=/d" .env 2>/dev/null || true echo "NEXT_PUBLIC_CMS_API_URL=\$CMS_URL" >> .env echo "NEXT_PUBLIC_LMS_API_URL=\$LMS_URL" >> .env +# Configurar S3 para almacenamiento de audio +if ! grep -q "^S3_BUCKET=" .env || grep -q "^S3_BUCKET=$" .env; then + sed -i "/^S3_BUCKET=/d" .env 2>/dev/null || true + echo "S3_BUCKET=openccb-802726101181-us-east-2-an" >> .env +fi +if ! grep -q "^AWS_REGION=" .env || grep -q "^AWS_REGION=$" .env; then + sed -i "/^AWS_REGION=/d" .env 2>/dev/null || true + echo "AWS_REGION=us-east-2" >> .env +fi +# AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY se mantienen si ya existen +if ! grep -q "^AWS_ACCESS_KEY_ID=" .env; then + echo "AWS_ACCESS_KEY_ID=" >> .env +fi +if ! grep -q "^AWS_SECRET_ACCESS_KEY=" .env; then + echo "AWS_SECRET_ACCESS_KEY=" >> .env +fi + # Asegurar dominios públicos para nginx-proxy y certificados SSL sed -i "/^NEXT_PUBLIC_STUDIO_DOMAIN=/d" .env 2>/dev/null || true sed -i "/^NEXT_PUBLIC_LEARNING_DOMAIN=/d" .env 2>/dev/null || true diff --git a/web/studio/Dockerfile b/web/studio/Dockerfile index 624e3f7..cda4dc0 100644 --- a/web/studio/Dockerfile +++ b/web/studio/Dockerfile @@ -1,5 +1,7 @@ +# syntax=docker/dockerfile:1.7 + # Build stage for Rust CMS -FROM rustlang/rust:nightly AS rust-builder +FROM rust:1-bookworm AS rust-builder WORKDIR /usr/src/app # Install system dependencies first @@ -11,20 +13,24 @@ COPY shared/ ./shared/ COPY services/ ./services/ # Build the CMS service -RUN cargo build --release -p cms-service +RUN --mount=type=cache,target=/usr/local/cargo/registry \ + --mount=type=cache,target=/usr/local/cargo/git \ + --mount=type=cache,target=/tmp/cargo-target \ + CARGO_TARGET_DIR=/tmp/cargo-target cargo build --release -p cms-service && \ + cp /tmp/cargo-target/release/cms-service /usr/src/app/cms-service # Build stage for Next.js Studio FROM node:20-alpine AS node-builder WORKDIR /app COPY web/studio/package*.json ./ -RUN npm ci +RUN --mount=type=cache,target=/root/.npm npm ci COPY web/studio/ . ARG NEXT_PUBLIC_CMS_API_URL ARG NEXT_PUBLIC_LMS_API_URL ENV NEXT_PUBLIC_CMS_API_URL=$NEXT_PUBLIC_CMS_API_URL ENV NEXT_PUBLIC_LMS_API_URL=$NEXT_PUBLIC_LMS_API_URL -RUN npm run build +RUN --mount=type=cache,target=/root/.npm npm run build # Final stage FROM node:20-slim AS runner @@ -35,10 +41,10 @@ ENV NODE_ENV production RUN apt-get update && apt-get install -y openssl ca-certificates && rm -rf /var/lib/apt/lists/* # Install sharp for Next.js image optimization -RUN npm install sharp +RUN --mount=type=cache,target=/root/.npm npm install sharp # Copy CMS binary -COPY --from=rust-builder /usr/src/app/target/release/cms-service ./ +COPY --from=rust-builder /usr/src/app/cms-service ./ # Copy Studio frontend COPY --from=node-builder /app/public ./public