Este proyecto contiene una instancia básica de Backstage configurada para ejecutarse con Docker Compose.
- Docker Compose: Orquestación completa de servicios (App + Postgres).
- Base de Datos: PostgreSQL 15 integrado.
- Scaffolder (Plantillas): Habilitado en el código del backend (
packages/backend). - Desarrollo Local: Configuración optimizada para evitar errores de permisos 401 (
permission.enabled: false).
- Compilación de
isolated-vm: El plugin Scaffolder depende deisolated-vm. En algunos entornos (especialmente Mac con chips M1/M2/M3), la compilación de este módulo nativo dentro de Docker puede fallar o causar inestabilidad. - Permisos: El framework de permisos está temporalmente deshabilitado (
permission.enabled: false) enapp-config.yamlpara facilitar el desarrollo local sin políticas complejas.
Esta es la forma estándar de ejecutar todo el entorno.
-
Construir e Iniciar Contenedores:
docker compose up -d --build
Nota: El flag
--buildes crucial si has modificado código (como habilitar plugins). -
Acceder a Backstage:
- Frontend: http://localhost:3000
- Backend API: http://localhost:7007
-
Ver logs:
docker compose logs -f backstage
-
Detener:
docker compose down
Si encuentras problemas con la compilación de módulos nativos dentro de Docker, se recomienda ejecutar la base de datos en Docker y la aplicación Backstage localmente en tu host.
-
Iniciar solo la Base de Datos:
docker compose up -d postgres
-
Instalar dependencias y ejecutar Backstage localmente:
cd backstage-app yarn install yarn devEsto utilizará tu compilador local (Xcode Command Line Tools) para
isolated-vm, lo cual es mucho más robusto en macOS.
- Causa: El framework de permisos está habilitado pero no configurado para el usuario Guest.
- Solución: Asegúrate de que
permission.enabled: falseesté establecido enapp-config.yaml. (Ya aplicado en este proyecto).
- Causa: Fallo en la compilación de dependencias nativas en la imagen Docker
slim. - Solución: Usa el métod "Desarrollo Híbrido" descrito arriba para compilar nativamente en tu máquina.
- Causa: Configuración de host incorrecta.
- Solución:
- En Docker:
POSTGRES_HOST: postgres(nombre del servicio). - Localmente:
POSTGRES_HOST: localhost(asegúrate de que127.0.0.1esté habilitado enapp-config.local.yamlsi existe).
- En Docker:
docker-compose.yml: Define los serviciosbackstage-appypostgres.backstage-app/: Directorio raíz del monorepo Backstage.packages/backend/src/index.ts: Punto de entrada del backend (donde se registran plugins como Scaffolder).app-config.yaml: Configuración principal.Dockerfile: Definición de la imagen del contenedor.