Add service container configurations for s6-svscan and docker
This commit is contained in:
parent
b962597e94
commit
4f45ec6787
|
@ -47,6 +47,14 @@ in
|
|||
});
|
||||
};
|
||||
|
||||
docker = import ./docker {
|
||||
inherit (pkgs) lib;
|
||||
dockerConstructorFun = constructors.docker;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableDockerContainer = true;
|
||||
});
|
||||
};
|
||||
|
||||
simpleInfluxdb = import ./influxdb/simpleinfluxdb.nix {
|
||||
influxdbConstructorFun = constructors.simpleInfluxdb;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
|
@ -90,6 +98,15 @@ in
|
|||
});
|
||||
};
|
||||
|
||||
s6-svscan = import ./s6-svscan {
|
||||
inherit libDir runtimeDir;
|
||||
inherit (pkgs) lib;
|
||||
s6-svscanConstructorFun = constructors.s6-svscan;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableS6RCService = true;
|
||||
});
|
||||
};
|
||||
|
||||
svnserve = import ./svnserve {
|
||||
inherit (pkgs) lib;
|
||||
svnserveConstructorFun = constructors.svnserve;
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
{dockerConstructorFun, lib, dysnomia}:
|
||||
|
||||
{ instanceSuffix ? ""
|
||||
, instanceName ? "docker${instanceSuffix}"
|
||||
, containerName ? "docker-container${instanceSuffix}"
|
||||
, postInstall ? ""
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
let
|
||||
pkg = dockerConstructorFun {
|
||||
inherit instanceName;
|
||||
|
||||
postInstall = ''
|
||||
# Add Dysnomia container configuration file for a Docker container
|
||||
mkdir -p $out/etc/dysnomia/containers
|
||||
cat > $out/etc/dysnomia/containers/${containerName} <<EOF
|
||||
EOF
|
||||
|
||||
# Copy the Dysnomia module that manages a docker-container
|
||||
mkdir -p $out/libexec/dysnomia
|
||||
ln -s ${dysnomia}/libexec/dysnomia/docker-container $out/libexec/dysnomia
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
name = instanceName;
|
||||
inherit pkg;
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // properties
|
|
@ -0,0 +1,38 @@
|
|||
{s6-svscanConstructorFun, lib, dysnomia, libDir, runtimeDir}:
|
||||
|
||||
{ instanceSuffix ? ""
|
||||
, instanceName ? "s6-svscan${instanceSuffix}"
|
||||
, containerName ? "s6-rc-service${instanceSuffix}"
|
||||
, scanDir ? "${runtimeDir}/service${instanceSuffix}"
|
||||
, postInstall ? ""
|
||||
, type ? null
|
||||
, properties ? {}
|
||||
}:
|
||||
|
||||
let
|
||||
serviceDir = "${libDir}/${instanceName}/sv";
|
||||
|
||||
pkg = s6-svscanConstructorFun {
|
||||
inherit instanceName scanDir serviceDir;
|
||||
|
||||
postInstall = ''
|
||||
# Add Dysnomia container configuration file for s6-svscan
|
||||
mkdir -p $out/etc/dysnomia/containers
|
||||
cat > $out/etc/dysnomia/containers/${containerName} <<EOF
|
||||
serviceDir="${serviceDir}"
|
||||
scanDir="${scanDir}"
|
||||
EOF
|
||||
|
||||
# Copy the Dysnomia module that manages a s6-rc service
|
||||
mkdir -p $out/libexec/dysnomia
|
||||
ln -s ${dysnomia}/libexec/dysnomia/supervisord-program $out/libexec/dysnomia
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
name = instanceName;
|
||||
inherit pkg serviceDir scanDir;
|
||||
providesContainer = containerName;
|
||||
} // lib.optionalAttrs (type != null) {
|
||||
inherit type;
|
||||
} // properties
|
|
@ -1,12 +1,13 @@
|
|||
{createManagedProcess, docker, kmod, runtimeDir, libDir}:
|
||||
{instanceSuffix ? "", instanceName ? "docker${instanceSuffix}", extraArgs ? []}:
|
||||
{instanceSuffix ? "", instanceName ? "docker${instanceSuffix}", extraArgs ? [], postInstall ? ""}:
|
||||
|
||||
let
|
||||
user = instanceName;
|
||||
group = instanceName;
|
||||
in
|
||||
createManagedProcess {
|
||||
inherit instanceName;
|
||||
inherit instanceName postInstall;
|
||||
|
||||
foregroundProcess = "${docker}/bin/dockerd";
|
||||
args = [
|
||||
"--group=${group}"
|
||||
|
|
|
@ -5,10 +5,11 @@
|
|||
, scanDir ? "${runtimeDir}/service${instanceSuffix}"
|
||||
, logUser ? "s6-log${instanceSuffix}"
|
||||
, logGroup ? "s6-log${instanceSuffix}"
|
||||
, postInstall ? ""
|
||||
}:
|
||||
|
||||
createManagedProcess {
|
||||
inherit instanceName;
|
||||
inherit instanceName postInstall;
|
||||
|
||||
path = [ s6 ];
|
||||
foregroundProcess = "${s6}/bin/s6-svscan";
|
||||
|
|
Loading…
Reference in New Issue