The issue is that docker-containers start by default with systemd. I would like to disable the default behavior so that I can set a timer when the container starts.
What I’ve tried is to override the default wantedBy
option to empty list, startAt
to a specific time and set the serviceConfig.Restart
to on-failure
. But it still starts when I rebuild the system and than runs once.
I’m using version 20.03
.
systemd.services.docker-CONTAINER_NAME = {
serviceConfig.Restart = mkForce "on-failure";
startAt = "02:00:00";
wantedBy = [];
};
Could you post how you added docker-CONTAINER_NAME as well as the generated .service file?
1 Like
Ma27
August 4, 2020, 6:14pm
3
@XXLPitu probably wantedBy = lib.mkForce [];
?
Here is a minimal example
docker-containers.image = {
image = "image";
imageFile = pkgs.dockerTools.buildImage {
name = "image";
tag = "latest";
created = "now";
config.Cmd = [ "${pkgs.hello}/bin/hello" ];
};
log-driver = "journald";
};
systemd.services.docker-image = {
serviceConfig.Restart = lib.mkForce "no";
startAt = "02:00:00";
wantedBy = [];
};
docker-image.service
[Unit]
After=docker.service docker.socket
Requires=docker.service docker.socket
[Service]
Environment="LOCALE_ARCHIVE=/nix/store/jbyaw0r48gxslxczwnjw5371rqj03gn8-glibc-locales-2.30/lib/locale/locale-archive"
Environment="PATH=/nix/store/x0jla3hpxrwz76hy9yckg1iyc9hns81k-coreutils-8.31/bin:/nix/store/97vambzyvpvrd9wgrrw7i7svi0s8vny5-findutils-4.7.0/bin:/nix/store/b0vjq4r4sp9z4l2gbkc5dyyw5qfgyi3r-gnugrep-3.4/bin:/nix/>
Environment="TZDIR=/nix/store/8cz89zavyrm2bdrgkx4l66s5c7nx12dr-tzdata-2019c/share/zoneinfo"
ExecStart=/nix/store/3vj9y663i3l0avp7bdn3pbn671k4mxgq-docker-19.03.12/bin/docker run \
--rm \
--name=image \
--log-driver=journald \
image
ExecStartPre=-/nix/store/3vj9y663i3l0avp7bdn3pbn671k4mxgq-docker-19.03.12/bin/docker rm -f image
ExecStartPre=/nix/store/3vj9y663i3l0avp7bdn3pbn671k4mxgq-docker-19.03.12/bin/docker load -i /nix/store/na8d5rm471bc9vpv2f9q0mndcy2cr7vh-docker-image-image.tar.gz
ExecStop=/nix/store/hrpvwkjz04s9i4nmli843hyw9z4pwhww-bash-4.4-p23/bin/sh -c "[ $SERVICE_RESULT = success ] || /nix/store/3vj9y663i3l0avp7bdn3pbn671k4mxgq-docker-19.03.12/bin/docker stop image"
ExecStopPost=-/nix/store/3vj9y663i3l0avp7bdn3pbn671k4mxgq-docker-19.03.12/bin/docker rm -f image
Restart=no
TimeoutStartSec=0
TimeoutStopSec=120