Configuración
Configurá un build con acropolis.json o railpack.json y con variables ACROPOLIS_ o RAILPACK_.
La mayoría de las apps no necesitan configuración: Acropolis detecta el provider a partir del repo, con la misma precedencia que Railpack (Go, Rust, Python, Java y otros ganan sobre un package.json). Cuando la detección necesita ayuda, tenés dos formas de orientarla.
Archivo de configuración
Acropolis lee acropolis.json, o railpack.json si no existe, desde el directorio de la app. --config (o la variable CONFIG_FILE) elige otro archivo, que tiene que estar dentro del directorio de la app. El archivo es JSON (también se acepta JSON5) y sigue el schema de Railpack:
{
"provider": "node",
"buildAptPackages": ["libvips-dev"],
"steps": {
"build": { "commands": ["npm run build:prod"] }
},
"deploy": {
"startCommand": "node dist/server.js",
"aptPackages": ["ffmpeg"],
"paths": ["dist"]
}
}
Claves soportadas: provider, packages, buildAptPackages, steps (con commands, variables, secrets, deployOutputs), deploy (startCommand, aptPackages, inputs, paths, variables) y exclude. Los secrets y caches de primer nivel de Railpack, los inputs y caches de los steps y deploy.base se aceptan por compatibilidad, pero se ignoran. Las claves desconocidas hacen fallar el build, así que un typo no pasa desapercibido.
Variables
Las variables de la app se pasan con -e KEY=VALUE. Cada setting se lee primero con el prefijo ACROPOLIS_ y después con el prefijo RAILPACK_, así una configuración de Railpack sigue funcionando:
| variable | qué hace |
|---|---|
BUILD_CMD, START_CMD |
Reemplazan los comandos de build y de arranque detectados. |
PROVIDER |
Fuerza un provider en lugar de detectarlo. |
PACKAGES |
Herramientas extra que se instalan con mise, como node@22 jq. |
BUILD_APT_PACKAGES, DEPLOY_APT_PACKAGES |
Paquetes de Debian para el build y para la imagen de runtime. |
NODE_VERSION, BUN_VERSION, GO_VERSION, RUST_VERSION, PYTHON_VERSION, UV_VERSION, RUBY_VERSION, PHP_VERSION, JDK_VERSION, DOTNET_VERSION, ELIXIR_VERSION, GLEAM_VERSION, DENO_VERSION |
Fijan la versión de un toolchain. |
CONFIG_FILE |
Ruta del archivo de configuración, relativa a la app. |
Las variables comunes de la app que pasás con -e (cualquier nombre sin el prefijo ACROPOLIS_ o RAILPACK_) llegan a los steps del build, pero el plan solo lleva referencias {env:NAME}, nunca los valores, y la config de la imagen no las recibe: definí las variables de runtime en el contenedor que corre la imagen. Los settings de la tabla de arriba son distintos: Acropolis lee sus valores para armar el plan, así que pueden terminar en el plan que imprime plan --json y en la config de la imagen (START_CMD pasa a ser el comando de la imagen, por ejemplo). Las variables escritas en los steps personalizados de un archivo de configuración también forman parte del plan. Nunca pongas secretos en estos settings.
info.json no guarda el plan: tiene el hash del plan, los datos detectados y las versiones de toolchain pedidas y resueltas.
Settings del operador
Estas (con el prefijo ACROPOLIS_ o RAILPACK_) se leen solo del entorno del proceso acropolis. Si llegan por -e o por el archivo de configuración se ignoran, así que una app no puede cambiarlas:
| variable | qué hace |
|---|---|
ACROPOLIS_CACHE_KEY |
Clave de caché por app (también es el --key por defecto de acropolis cache). Si no está, el build usa un hash de la ruta de la app. |
ACROPOLIS_CACHE_MAX |
Después de cada build, recorta el home a este tamaño (20G), como acropolis gc. |
ACROPOLIS_NO_CACHE |
Hace el build sin la caché por app. |
ACROPOLIS_BUILD_TIMEOUT |
Timeout del build completo; 1 h por defecto. |
ACROPOLIS_STEP_TIMEOUT |
Timeout de cada step. |
ACROPOLIS_BUILD_ID |
Id del build que se escribe en cada evento JSON. |
ACROPOLIS_ALLOW_PRIVATE_REGISTRY |
Permite registries privados y http:// para lo que Acropolis descarga por su cuenta. |