@@ -237,6 +237,31 @@ in rec {
237237 };
238238 };
239239
240+ dockerImage = args@{exe, name, version}: let
241+ appDirSetupScript = nixpkgs.runCommand "appDirSetupScript.sh" {} ''
242+ mkdir -p $out/var/run/backend
243+ ln -sft $out/var/run/backend '${exe}'/*
244+ ${nixpkgs.findutils}/bin/find $out/var/run/backend
245+ '';
246+
247+ in nixpkgs.dockerTools.buildImage {
248+ name = name;
249+ tag = version;
250+ contents = [ nixpkgs.iana-etc nixpkgs.cacert appDirSetupScript ];
251+ keepContentsDirlinks = true;
252+ config = {
253+ Env = [
254+ ("PATH=" + builtins.concatStringsSep(":")([
255+ "/var/run/backend"
256+ ]))
257+ ];
258+ Expose = 8000;
259+ Entrypoint = ["/var/run/backend/backend"];
260+ WorkingDir = "/var/run/backend";
261+ User = "99:99";
262+ };
263+ };
264+
240265 serverExe = backend: frontend: assets: optimizationLevel: version:
241266 pkgs.runCommand "serverExe" {} ''
242267 mkdir $out
@@ -353,6 +378,8 @@ in rec {
353378 exe = serverOn system dummyVersion;
354379 server = args@{ hostName, adminEmail, routeHost, enableHttps, version }:
355380 server (args // { exe = linuxExe version; });
381+ dockerImage = args@{ name, version }:
382+ dockerImage (args // { exe = linuxExe version; });
356383 obelisk = import (base + "/.obelisk/impl") {};
357384 };
358385 haskellPackageSets = {