on fe233ff help sign in
1 file changed+40
since splitsnapshots
unifiedsplit
default.nix+40
default.nix+40
@@ -237,6 +237,44 @@ in rec {
237237 };
238238 };
239239
240+ dockerImage = args@{exe, name}: let
241+ dockerImageSetupScript = nixpkgs.dockerTools.shellScript "dockersetup.sh" ''
242+ set -ex
243+
244+ ${nixpkgs.dockerTools.shadowSetup}
245+ echo 'nobody:x:99:99:Nobody:/:/sbin/nologin' >> /etc/passwd
246+ echo 'nobody:*:17416:0:99999:7:::' >> /etc/shadow
247+ echo 'nobody:x:99:' >> /etc/group
248+ echo 'nobody:::' >> /etc/gshadow
249+
250+ mkdir -p /var/run/backend
251+ ln -sft /var/run/backend '${exe}'/*
252+ ${nixpkgs.findutils}/bin/find /var/run/backend
253+
254+ chown 99:99 /var/run/backend
255+ '';
256+
257+ in nixpkgs.dockerTools.buildImage {
258+ name = name;
259+ contents = [ nixpkgs.iana-etc nixpkgs.cacert ];
260+ runAsRoot = dockerImageSetupScript;
261+ keepContentsDirlinks = true;
262+ config = {
263+
264+ Env = [
265+ ("PATH=" + builtins.concatStringsSep(":")([
266+ "${nixpkgs.stdenv.shellPackage}/bin"
267+ "${nixpkgs.coreutils}/bin"
268+ "/var/run/backend"
269+ ]))
270+ ];
271+ Expose = 8000;
272+ Entrypoint = ["/var/run/backend/backend"];
273+ WorkingDir = "/var/run/backend";
274+ User = "99:99";
275+ };
276+ };
277+
240278 serverExe = backend: frontend: assets: optimizationLevel: version:
241279 pkgs.runCommand "serverExe" {} ''
242280 mkdir $out
@@ -353,6 +391,8 @@ in rec {
353391 exe = serverOn system dummyVersion;
354392 server = args@{ hostName, adminEmail, routeHost, enableHttps, version }:
355393 server (args // { exe = linuxExe version; });
394+ dockerImage = args@{ name, version }:
395+ dockerImage { name = name; exe = linuxExe version; };
356396 obelisk = import (base + "/.obelisk/impl") {};
357397 };
358398 haskellPackageSets = {