docker load arion-base-image
This commit is contained in:
parent
02d319acf6
commit
c88d2bb9cf
4 changed files with 46 additions and 10 deletions
|
@ -9,7 +9,7 @@
|
||||||
"PATH": "/usr/bin:/run/current-system/sw/bin/",
|
"PATH": "/usr/bin:/run/current-system/sw/bin/",
|
||||||
"container": "docker"
|
"container": "docker"
|
||||||
},
|
},
|
||||||
"image": "webserver:<HASH>",
|
"image": "arion-base:<HASH>",
|
||||||
"ports": [
|
"ports": [
|
||||||
"8000:80"
|
"8000:80"
|
||||||
],
|
],
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
"images": [
|
"images": [
|
||||||
{
|
{
|
||||||
"image": "<STOREPATH>",
|
"image": "<STOREPATH>",
|
||||||
"imageName": "webserver",
|
"imageName": "arion-base",
|
||||||
"imageTag": "<HASH>"
|
"imageTag": "<HASH>"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
@ -22,6 +22,7 @@ let
|
||||||
./modules/composition/host-environment.nix
|
./modules/composition/host-environment.nix
|
||||||
./modules/composition/images.nix
|
./modules/composition/images.nix
|
||||||
./modules/composition/service-info.nix
|
./modules/composition/service-info.nix
|
||||||
|
./modules/composition/arion-base-image.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
argsModule = {
|
argsModule = {
|
||||||
|
|
41
src/nix/modules/composition/arion-base-image.nix
Normal file
41
src/nix/modules/composition/arion-base-image.nix
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
|
||||||
|
|
||||||
|
# This module is subject to change.
|
||||||
|
# In particular, arion-base should use a generic non-service image building system
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
tag = lib.head (lib.strings.splitString "-" (baseNameOf builtImage.outPath));
|
||||||
|
name = "arion-base";
|
||||||
|
|
||||||
|
builtImage = pkgs.dockerTools.buildLayeredImage {
|
||||||
|
inherit name;
|
||||||
|
contents = pkgs.runCommand "minimal-contents" {} ''
|
||||||
|
mkdir -p $out/bin $out/usr/bin
|
||||||
|
ln -s /run/system/bin/sh $out/bin/sh
|
||||||
|
ln -s /run/system/usr/bin/env $out/usr/bin/env
|
||||||
|
'';
|
||||||
|
config = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
options = {
|
||||||
|
arionBaseImage = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Image to use when using useHostStore. Don't use this option yourself. It's going away.";
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
arionBaseImage = "${name}:${tag}";
|
||||||
|
build.imagesToLoad = lib.mkIf (lib.any (s: s.config.service.useHostStore) (lib.attrValues config.docker-compose.evaluatedServices)) [
|
||||||
|
{ image = builtImage; imageName = name; imageTag = tag; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -29,14 +29,8 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = mkIf config.service.useHostStore {
|
config = mkIf config.service.useHostStore {
|
||||||
image.nixBuild = true;
|
image.nixBuild = false; # no need to build and load
|
||||||
image.contents = [
|
service.image = config.composition.arionBaseImage;
|
||||||
(pkgs.runCommand "minimal-contents" {} ''
|
|
||||||
mkdir -p $out/bin $out/usr/bin
|
|
||||||
ln -s /run/system/bin/sh $out/bin/sh
|
|
||||||
ln -s /run/system/usr/bin/env $out/usr/bin/env
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
service.environment.NIX_REMOTE = lib.optionalString config.service.useHostNixDaemon "daemon";
|
service.environment.NIX_REMOTE = lib.optionalString config.service.useHostNixDaemon "daemon";
|
||||||
service.volumes = [
|
service.volumes = [
|
||||||
"${config.host.nixStorePrefix}/nix/store:/nix/store${lib.optionalString config.service.hostStoreAsReadOnly ":ro"}"
|
"${config.host.nixStorePrefix}/nix/store:/nix/store${lib.optionalString config.service.hostStoreAsReadOnly ":ro"}"
|
||||||
|
|
Loading…
Reference in a new issue