Fix problem with local ordering when using webapps with transitive inter-dependencies
This commit is contained in:
parent
e089b3b24d
commit
d06d160f59
|
@ -1,6 +1,6 @@
|
|||
{createManagedProcess, stdenv, writeTextFile, nginx, runtimeDir, stateDir, cacheDir, forceDisableUserChange}:
|
||||
{port ? 80, webapps ? [], instanceSuffix ? ""}:
|
||||
interDeps:
|
||||
interDependencies:
|
||||
|
||||
let
|
||||
instanceName = "nginx${instanceSuffix}";
|
||||
|
@ -9,14 +9,14 @@ let
|
|||
|
||||
nginxStateDir = "${stateDir}/${instanceName}";
|
||||
nginxLogDir = "${nginxStateDir}/logs";
|
||||
dependencies = webapps ++ (builtins.attrValues interDeps);
|
||||
in
|
||||
import ./nginx.nix {
|
||||
inherit createManagedProcess stdenv nginx stateDir forceDisableUserChange runtimeDir cacheDir;
|
||||
} {
|
||||
inherit instanceSuffix;
|
||||
|
||||
dependencies = map (webapp: webapp.pkg) dependencies;
|
||||
dependencies = map (webapp: webapp.pkg) webapps
|
||||
++ map (interDependency: interDependency.pkgs."${stdenv.system}") (builtins.attrValues interDependencies);
|
||||
|
||||
configFile = writeTextFile {
|
||||
name = "nginx.conf";
|
||||
|
@ -38,15 +38,15 @@ import ./nginx.nix {
|
|||
}
|
||||
'') webapps}
|
||||
|
||||
${stdenv.lib.concatMapStrings (dependencyName:
|
||||
${stdenv.lib.concatMapStrings (paramName:
|
||||
let
|
||||
dependency = builtins.getAttr dependencyName interDeps;
|
||||
dependency = builtins.getAttr paramName interDependencies;
|
||||
in
|
||||
''
|
||||
upstream webapp${toString dependency.port} {
|
||||
server ${dependency.target.properties.hostname}:${toString dependency.port};
|
||||
}
|
||||
'') (builtins.attrNames interDeps)}
|
||||
'') (builtins.attrNames interDependencies)}
|
||||
|
||||
# Fallback virtual host displaying an error page. This is what users see
|
||||
# if they connect to a non-deployed web application.
|
||||
|
@ -68,7 +68,7 @@ import ./nginx.nix {
|
|||
proxy_pass http://webapp${toString dependency.port};
|
||||
}
|
||||
}
|
||||
'') dependencies}
|
||||
'') (webapps ++ builtins.attrValues interDependencies)}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{createManagedProcess, stdenv, writeTextFile, nginx, runtimeDir, stateDir, cacheDir, forceDisableUserChange}:
|
||||
{port ? 80, webapps ? [], instanceSuffix ? "", enableCache ? false}:
|
||||
interDeps:
|
||||
interDependencies:
|
||||
|
||||
let
|
||||
instanceName = "nginx${instanceSuffix}";
|
||||
|
@ -11,14 +11,15 @@ let
|
|||
nginxLogDir = "${nginxStateDir}/logs";
|
||||
nginxCacheDir = "${cacheDir}/${instanceName}";
|
||||
|
||||
dependencies = webapps ++ (builtins.attrValues interDeps);
|
||||
dependencies = webapps ++ (builtins.attrValues interDependencies);
|
||||
in
|
||||
import ./nginx.nix {
|
||||
inherit createManagedProcess stdenv nginx stateDir forceDisableUserChange runtimeDir cacheDir;
|
||||
} {
|
||||
inherit instanceSuffix;
|
||||
|
||||
dependencies = map (webapp: builtins.trace ("we have a: ${toString (builtins.toJSON (builtins.functionArgs webapp.pkg))}") webapp.pkg) webapps;# dependencies;
|
||||
dependencies = map (webapp: webapp.pkg) webapps
|
||||
++ map (interDependency: interDependency.pkgs."${stdenv.system}") (builtins.attrValues interDependencies);
|
||||
|
||||
configFile = writeTextFile {
|
||||
name = "nginx.conf";
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
, cacheDir ? "${stateDir}/cache"
|
||||
, tmpDir ? (if stateDir == "/var" then "/tmp" else "${stateDir}/tmp")
|
||||
, forceDisableUserChange ? false
|
||||
, processManager ? null # "sysvinit"
|
||||
, processManager ? "sysvinit"
|
||||
}:
|
||||
|
||||
let
|
||||
|
|
Loading…
Reference in New Issue