replace watchtower with custom script
This commit is contained in:
parent
7c6dfdad80
commit
8598ddc1bf
@ -128,18 +128,25 @@ let
|
||||
at_path = vars.primary_archiveteam;
|
||||
in
|
||||
{
|
||||
virtualisation.oci-containers.containers =
|
||||
(createTemplatedContainers containers container-spec)
|
||||
// {
|
||||
archiveteam-watchtower = {
|
||||
image = "containrrr/watchtower:latest";
|
||||
labels = {
|
||||
"com.centurylinklabs.watchtower.enable" = "true";
|
||||
"com.centurylinklabs.watchtower.scope" = "archiveteam";
|
||||
};
|
||||
volumes = [ "/var/run/docker.sock:/var/run/docker.sock" ];
|
||||
log-driver = "local";
|
||||
cmd = lib.splitString " " "--label-enable --cleanup --interval 600";
|
||||
virtualisation.oci-containers.containers = createTemplatedContainers containers container-spec;
|
||||
systemd = {
|
||||
timers."custom-watchtower@archiveteam" = {
|
||||
wantedBy = [ "timers.target" ];
|
||||
timerConfig = {
|
||||
OnBootSec = "20m";
|
||||
OnUnitActiveSec = "5m";
|
||||
Unit = "custom-watchtower@archiveteam.service";
|
||||
};
|
||||
};
|
||||
services."custom-watchtower@archiveteam" = {
|
||||
bindsTo = [ "docker.service" ];
|
||||
after = [ "docker.service" ];
|
||||
description = "runs a watchtower-esque script for systemd-based oci-containers";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = "root";
|
||||
ExecStart = "${config.nix.package}/bin/nix ${./watchtower.bash} 'com.centurylinklabs.watchtower.scope' 'archiveteam'";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
24
systems/palatine-hill/docker/watchtower.bash
Normal file
24
systems/palatine-hill/docker/watchtower.bash
Normal file
@ -0,0 +1,24 @@
|
||||
#! /usr/bin/env nix
|
||||
#! nix shell nixpkgs#docker nixpkgs#bash --command bash
|
||||
|
||||
outdated_msg="Project code is out of date and needs to be upgraded. To remedy this problem immediately, you may reboot your warrior."
|
||||
|
||||
label="$1"
|
||||
label_val="$2"
|
||||
|
||||
if (( $# != 2 )); then
|
||||
echo "usage: $0 label label_value"
|
||||
fi
|
||||
|
||||
containers=$(docker ps --format '{{.Names}}' -f "label=${label}=${label_val}")
|
||||
|
||||
for container in ${containers[@]}; do
|
||||
echo "checking ${container}"
|
||||
|
||||
last_msg=$(docker logs -n 1 "${container}")
|
||||
|
||||
if [[ $last_msg =~ $outdated_msg ]]; then
|
||||
echo "${container} is outdated, restarting"
|
||||
systemctl restart "docker-${container}"
|
||||
fi
|
||||
done
|
Loading…
x
Reference in New Issue
Block a user