* 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
		
			
				
	
	
		
			30 lines
		
	
	
		
			698 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			698 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
# 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");
 | 
						|
  '';
 | 
						|
})
 |