diff options
author | Michele Catalano <michele@catalano.de> | 2018-04-06 15:11:52 +0200 |
---|---|---|
committer | Maximilian Bosch <maximilian@mbosch.me> | 2018-05-01 15:23:47 +0200 |
commit | afd3136e8efe2cbd477cb6db7be5ad7b2eb7efc6 (patch) | |
tree | ed76d7008c48e4d746db480cad607561e668af17 /nixos/modules/services/misc | |
parent | 593dc4514192354491473ba00e1b9104f456c50c (diff) | |
download | nixlib-afd3136e8efe2cbd477cb6db7be5ad7b2eb7efc6.tar nixlib-afd3136e8efe2cbd477cb6db7be5ad7b2eb7efc6.tar.gz nixlib-afd3136e8efe2cbd477cb6db7be5ad7b2eb7efc6.tar.bz2 nixlib-afd3136e8efe2cbd477cb6db7be5ad7b2eb7efc6.tar.lz nixlib-afd3136e8efe2cbd477cb6db7be5ad7b2eb7efc6.tar.xz nixlib-afd3136e8efe2cbd477cb6db7be5ad7b2eb7efc6.tar.zst nixlib-afd3136e8efe2cbd477cb6db7be5ad7b2eb7efc6.zip |
nixos/docker-registry: Add support for garbage collector to docker registry
Diffstat (limited to 'nixos/modules/services/misc')
-rw-r--r-- | nixos/modules/services/misc/docker-registry.nix | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/nixos/modules/services/misc/docker-registry.nix b/nixos/modules/services/misc/docker-registry.nix index c0dbcf380db3..45931cb42b54 100644 --- a/nixos/modules/services/misc/docker-registry.nix +++ b/nixos/modules/services/misc/docker-registry.nix @@ -42,6 +42,8 @@ let }; }; + configFile = pkgs.writeText "docker-registry-config.yml" (builtins.toJSON (registryConfig // cfg.extraConfig)); + in { options.services.dockerRegistry = { enable = mkEnableOption "Docker Registry"; @@ -70,11 +72,7 @@ in { description = "Enable delete for manifests and blobs."; }; - enableRedisCache = mkOption { - type = types.bool; - default = false; - description = "Enable redis as blob cache instade of inmemory."; - }; + enableRedisCache = mkEnableOption "redis as blob cache"; redisUrl = mkOption { type = types.str; @@ -95,6 +93,19 @@ in { default = {}; type = types.attrsOf types.str; }; + + enableGarbageCollect = mkEnableOption "garbage collect"; + + garbageCollectDates = mkOption { + default = "daily"; + type = types.str; + description = '' + Specification (in the format described by + <citerefentry><refentrytitle>systemd.time</refentrytitle> + <manvolnum>7</manvolnum></citerefentry>) of the time at + which the garbage collect will occur. + ''; + }; }; config = mkIf cfg.enable { @@ -102,9 +113,7 @@ in { description = "Docker Container Registry"; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; - script = let - configFile = pkgs.writeText "docker-registry-config.yml" (builtins.toJSON (registryConfig // cfg.extraConfig)); - in '' + script = '' ${pkgs.docker-distribution}/bin/registry serve ${configFile} ''; @@ -114,6 +123,22 @@ in { }; }; + systemd.services.docker-registry-garbage-collect = { + description = "Run Garbage Collection for docker registry"; + + restartIfChanged = false; + unitConfig.X-StopOnRemoval = false; + + serviceConfig.Type = "oneshot"; + + script = '' + ${pkgs.docker-distribution}/bin/registry garbage-collect ${configFile} + ${pkgs.systemd}/bin/systemctl restart docker-registry.service + ''; + + startAt = optional cfg.enableGarbageCollect cfg.garbageCollectDates; + }; + users.extraUsers.docker-registry = { createHome = true; home = cfg.storagePath; |