feat: Sistema de variables de entorno mejorado con EnvironmentFile
- Agregado campo 'environment' a MonitoredApp para almacenar variables ADICIONALES - Solo se almacenan en JSON las variables agregadas manualmente desde el panel - Las variables del .env del proyecto se cargan automáticamente con EnvironmentFile - Modificado service_generator.rs para usar directiva EnvironmentFile en systemd - Fix: Usuario ahora se lee correctamente del JSON sin fallback a 'root' - Edit.html pre-carga variables adicionales del JSON al editar - Separación clara: .env (proyecto) vs variables adicionales (JSON) - Transparencia total con .env nativo del proyecto Beneficios: ✅ No duplicación de variables (.env es la fuente de verdad) ✅ JSON solo guarda variables extras (pequeño y limpio) ✅ .env funciona igual que en desarrollo ✅ systemd lee .env con EnvironmentFile ✅ Variables adicionales se persisten en JSON ✅ Al editar, se pre-cargan variables adicionales guardadas
This commit is contained in:
@@ -374,6 +374,10 @@
|
||||
|
||||
<script>
|
||||
function addEnvVar() {
|
||||
addEnvironmentVariable("", "");
|
||||
}
|
||||
|
||||
function addEnvironmentVariable(key, value) {
|
||||
const container = document.getElementById("env-container");
|
||||
const envItem = document.createElement("div");
|
||||
envItem.className =
|
||||
@@ -382,11 +386,13 @@
|
||||
<input
|
||||
type="text"
|
||||
placeholder="KEY"
|
||||
value="${key}"
|
||||
class="env-key bg-[#1c2730] border border-[#283039] rounded-lg px-4 py-2.5 text-white placeholder-[#9dabb9] focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"
|
||||
/>
|
||||
<input
|
||||
type="text"
|
||||
placeholder="valor"
|
||||
value="${value}"
|
||||
class="env-value bg-[#1c2730] border border-[#283039] rounded-lg px-4 py-2.5 text-white placeholder-[#9dabb9] focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"
|
||||
/>
|
||||
<button
|
||||
@@ -475,14 +481,32 @@
|
||||
document.getElementById("working_directory").value =
|
||||
app.path || "";
|
||||
|
||||
// Cargar usuario desde JSON o usar valor por defecto
|
||||
document.getElementById("user").value = app.user || "root";
|
||||
// Cargar usuario desde JSON (sin fallback)
|
||||
document.getElementById("user").value = app.user;
|
||||
document.getElementById("restart_policy").value = "always";
|
||||
document.getElementById("app_type").value = "nodejs";
|
||||
document.getElementById("description").value = "";
|
||||
|
||||
// Cargar variables de entorno (si las hay guardadas)
|
||||
// Por ahora mostramos un campo vacío, el .env se cargará automáticamente
|
||||
// ✅ Cargar variables de entorno ADICIONALES desde JSON
|
||||
// (Las del .env se cargan automáticamente con EnvironmentFile)
|
||||
if (
|
||||
app.environment &&
|
||||
Object.keys(app.environment).length > 0
|
||||
) {
|
||||
// Limpiar el campo vacío por defecto
|
||||
document.getElementById("env-container").innerHTML = "";
|
||||
|
||||
// Agregar cada variable del JSON
|
||||
Object.entries(app.environment).forEach(
|
||||
([key, value]) => {
|
||||
addEnvironmentVariable(key, value);
|
||||
},
|
||||
);
|
||||
|
||||
console.log(
|
||||
`✅ Cargadas ${Object.keys(app.environment).length} variables adicionales desde JSON`,
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error cargando app:", error);
|
||||
alert("Error al cargar los datos de la aplicación");
|
||||
|
||||
Reference in New Issue
Block a user