Fixes <https://issues.guix.gnu.org/38432>. * gnu/packages/patches/containerd-create-pid-file.patch: New file. * gnu/local.mk (dist_patch_DATA): Add this. * gnu/packages/docker.scm (containerd)[source]: Add this patch. * gnu/services/docker.scm (containerd-shepherd-service): Add #:pid-file and #:pid-file-timeout. * gnu/services/docker.scm (docker-shepherd-service): Add --containerd flag. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			999 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			999 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com>
 | 
						|
 | 
						|
Create a PID file after containerd is ready to serve requests.
 | 
						|
 | 
						|
Fixes <https://issues.guix.gnu.org/38432>.
 | 
						|
 | 
						|
--- a/cmd/containerd/command/notify_linux.go	1970-01-01 03:00:01.000000000 +0300
 | 
						|
+++ b/cmd/containerd/command/notify_linux.go	2022-07-02 04:42:35.553753495 +0300
 | 
						|
@@ -22,15 +22,22 @@
 | 
						|
 	sd "github.com/coreos/go-systemd/v22/daemon"
 | 
						|
 
 | 
						|
 	"github.com/containerd/containerd/log"
 | 
						|
+
 | 
						|
+	"os"
 | 
						|
+	"strconv"
 | 
						|
 )
 | 
						|
 
 | 
						|
 // notifyReady notifies systemd that the daemon is ready to serve requests
 | 
						|
 func notifyReady(ctx context.Context) error {
 | 
						|
+	pidFile, _ := os.Create("/run/containerd/containerd.pid")
 | 
						|
+	defer pidFile.Close()
 | 
						|
+	pidFile.WriteString(strconv.FormatInt(int64(os.Getpid()), 10))
 | 
						|
 	return sdNotify(ctx, sd.SdNotifyReady)
 | 
						|
 }
 | 
						|
 
 | 
						|
 // notifyStopping notifies systemd that the daemon is about to be stopped
 | 
						|
 func notifyStopping(ctx context.Context) error {
 | 
						|
+	os.Remove("/run/containerd/containerd.pid")
 | 
						|
 	return sdNotify(ctx, sd.SdNotifyStopping)
 | 
						|
 }
 | 
						|
 
 |