about summary refs log tree commit diff
path: root/nixos/tests/docker-containers.nix
diff options
context:
space:
mode:
authorBenjamin Staffin <benley@gmail.com>2019-03-24 18:59:09 -0400
committerDanylo Hlynskyi <abcz2.uprola@gmail.com>2019-03-25 00:59:09 +0200
commitc94005358c185d8262814a5b59b2b4185183bd95 (patch)
tree730f4f61f6d7a7fbb2c20e1ad5d0abd4ee530252 /nixos/tests/docker-containers.nix
parent0ee682da538489e032ccbdf7ba243a919677718c (diff)
downloadnixlib-c94005358c185d8262814a5b59b2b4185183bd95.tar
nixlib-c94005358c185d8262814a5b59b2b4185183bd95.tar.gz
nixlib-c94005358c185d8262814a5b59b2b4185183bd95.tar.bz2
nixlib-c94005358c185d8262814a5b59b2b4185183bd95.tar.lz
nixlib-c94005358c185d8262814a5b59b2b4185183bd95.tar.xz
nixlib-c94005358c185d8262814a5b59b2b4185183bd95.tar.zst
nixlib-c94005358c185d8262814a5b59b2b4185183bd95.zip
NixOS: Run Docker containers as declarative systemd services (#55179)
* WIP: Run Docker containers as declarative systemd services

* PR feedback round 1

* docker-containers: add environment, ports, user, workdir options

* docker-containers: log-driver, string->str, line wrapping

* ExecStart instead of script wrapper, %n for container name

* PR feedback: better description and example formatting

* Fix docbook formatting (oops)

* Use a list of strings for ports, expand documentation

* docker-continers: add a simple nixos test

* waitUntilSucceeds to avoid potential weird async issues

* Don't enable docker daemon unless we actually need it

* PR feedback: leave ExecReload undefined
Diffstat (limited to 'nixos/tests/docker-containers.nix')
-rw-r--r--nixos/tests/docker-containers.nix29
1 files changed, 29 insertions, 0 deletions
diff --git a/nixos/tests/docker-containers.nix b/nixos/tests/docker-containers.nix
new file mode 100644
index 000000000000..972552735202
--- /dev/null
+++ b/nixos/tests/docker-containers.nix
@@ -0,0 +1,29 @@
+# Test Docker containers as systemd units
+
+import ./make-test.nix ({ pkgs, lib, ... }: {
+  name = "docker-containers";
+  meta = {
+    maintainers = with lib.maintainers; [ benley ];
+  };
+
+  nodes = {
+    docker = { pkgs, ... }:
+      {
+        virtualisation.docker.enable = true;
+
+        virtualisation.dockerPreloader.images = [ pkgs.dockerTools.examples.nginx ];
+
+        docker-containers.nginx = {
+          image = "nginx-container";
+          ports = ["8181:80"];
+        };
+      };
+  };
+
+  testScript = ''
+    startAll;
+    $docker->waitForUnit("docker-nginx.service");
+    $docker->waitForOpenPort(8181);
+    $docker->waitUntilSucceeds("curl http://localhost:8181|grep Hello");
+  '';
+})