Files
develnix/module/dockerHelper/loadAndRunContainer.nix
2018-11-26 00:35:07 +01:00

34 lines
1.3 KiB
Nix

{pkgs, imageName, image, tag, extraRunConfig, containerName? "${imageName}-${tag}"}:
let
imageId= "${imageName}:${tag}";
dockerBin = "${pkgs.docker}/bin/docker";
loggerBin = "${pkgs.logger}/bin/logger";
in
{
systemd.services."docker-load-run-${containerName}-container" = {
description = "Docker load and run ${containerName}-container";
wantedBy = [ "multi-user.target" ];
wants = [ "docker.service" "local-fs.target" ];
after = [ "docker.service" "local-fs.target" ];
script = ''
if [[ "$(${dockerBin} images -aq ${imageId} 2> /dev/null)" == "" ]]; then
${dockerBin} load < ${image}
else
${loggerBin} -pdaemon.warning "an image with name ${imageId} already exists. Please use an other name or rename/remove the existing image, if you want use the new one."
fi
if [[ "$(${dockerBin} ps -qaf "name=${containerName}" 2> /dev/null)" == "" ]]; then
${dockerBin} run -d --name ${containerName} ${extraRunConfig} ${imageId}
else
${loggerBin} -pdaemon.warning "a container with name ${containerName} already exists. Please use an other name or rename/remove the existing containerName, if you want use the new one."
fi
'';
serviceConfig = {
Type = "oneshot";
};
};
}