@@ -237,6 +237,44 @@ in rec {
240+ dockerImage = args@{exe, name}: let
241+ dockerImageSetupScript = nixpkgs.dockerTools.shellScript "dockersetup.sh" ''
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
250+ mkdir -p /var/run/backend
251+ ln -sft /var/run/backend '${exe}'/*
252+ ${nixpkgs.findutils}/bin/find /var/run/backend
254+ chown 99:99 /var/run/backend
257+ in nixpkgs.dockerTools.buildImage {
259+ contents = [ nixpkgs.iana-etc nixpkgs.cacert ];
260+ runAsRoot = dockerImageSetupScript;
261+ keepContentsDirlinks = true;
265+ ("PATH=" + builtins.concatStringsSep(":")([
266+ "${nixpkgs.stdenv.shellPackage}/bin"
267+ "${nixpkgs.coreutils}/bin"
272+ Entrypoint = ["/var/run/backend/backend"];
273+ WorkingDir = "/var/run/backend";
240 serverExe = backend: frontend: assets: optimizationLevel: version:
278 serverExe = backend: frontend: assets: optimizationLevel: version:
241 pkgs.runCommand "serverExe" {} ''
279 pkgs.runCommand "serverExe" {} ''
242 mkdir $out
280 mkdir $out
@@ -353,6 +391,8 @@ in rec {
353 exe = serverOn system dummyVersion;
391 exe = serverOn system dummyVersion;
354 server = args@{ hostName, adminEmail, routeHost, enableHttps, version }:
392 server = args@{ hostName, adminEmail, routeHost, enableHttps, version }:
355 server (args // { exe = linuxExe version; });
393 server (args // { exe = linuxExe version; });
394+ dockerImage = args@{ name, version }:
395+ dockerImage { name = name; exe = linuxExe version; };
356 obelisk = import (base + "/.obelisk/impl") {};
396 obelisk = import (base + "/.obelisk/impl") {};
358 haskellPackageSets = {
398 haskellPackageSets = {