GNU bug report logs - #71263
Add additional fields to oci-container-configuration

Previous Next

Package: guix-patches;

Reported by: paul <goodoldpaul <at> autistici.org>

Date: Wed, 29 May 2024 21:38:02 UTC

Severity: normal

Done: Zheng Junjie <zhengjunjie <at> iscas.ac.cn>

Bug is archived. No further changes may be made.

Full log


Message #35 received at 71263 <at> debbugs.gnu.org (full text, mbox):

From: Giacomo Leidi <goodoldpaul <at> autistici.org>
To: 71263 <at> debbugs.gnu.org
Cc: Giacomo Leidi <goodoldpaul <at> autistici.org>
Subject: [PATCH v2 2/5] gnu: docker: Allow setting Shepherd log-file in
 oci-container-configuration.
Date: Tue, 11 Jun 2024 22:04:57 +0200
* gnu/services/docker.scm (oci-container-configuration)
[log-file]: New field;
(oci-container-shepherd-service): use it.

* doc/guix.texi: Document it.

Change-Id: Icad29ac6342b6f5bafc0d9be13a93cee99674185
---
 doc/guix.texi           |  5 +++++
 gnu/services/docker.scm | 19 +++++++++++++++----
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 5a06d7cdc5..40296fcd5f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -40698,6 +40698,11 @@ Miscellaneous Services
 Set additional Shepherd services dependencies to the provisioned
 Shepherd service.
 
+@item @code{log-file} (default: @code{""}) (type: string)
+When @code{log-file} is set, it names the file to which the service's
+standard output and standard error are redirected.  @code{log-file} is created
+if it does not exist, otherwise it is appended to.
+
 @item @code{network} (default: @code{""}) (type: string)
 Set a Docker network for the spawned container.
 
diff --git a/gnu/services/docker.scm b/gnu/services/docker.scm
index cc1201508c..678e8b1139 100644
--- a/gnu/services/docker.scm
+++ b/gnu/services/docker.scm
@@ -74,6 +74,7 @@ (define-module (gnu services docker)
             oci-container-configuration-image
             oci-container-configuration-provision
             oci-container-configuration-requirement
+            oci-container-configuration-log-file
             oci-container-configuration-network
             oci-container-configuration-ports
             oci-container-configuration-volumes
@@ -461,6 +462,11 @@ (define-configuration/no-serialization oci-container-configuration
    (list-of-symbols '())
    "Set additional Shepherd services dependencies to the provisioned Shepherd
 service.")
+  (log-file
+   (maybe-string)
+   "When @code{log-file} is set, it names the file to which the service’s
+standard output and standard error are redirected.  @code{log-file} is created
+if it does not exist, otherwise it is appended to.")
   (network
    (maybe-string)
    "Set a Docker network for the spawned container.")
@@ -669,12 +675,16 @@ (define (oci-container-shepherd-service config)
          (host-environment
           (oci-container-configuration-host-environment config))
          (command (oci-container-configuration-command config))
+         (log-file (oci-container-configuration-log-file config))
          (provision (oci-container-configuration-provision config))
          (requirement (oci-container-configuration-requirement config))
          (image (oci-container-configuration-image config))
          (image-reference (oci-image-reference image))
          (options (oci-container-configuration->options config))
          (name (guess-name provision image))
+         (loader (if (oci-image? image)
+                     (%oci-image-loader name image image-reference)
+                     #f))
          (extra-arguments
           (oci-container-configuration-extra-arguments config)))
 
@@ -687,10 +697,8 @@ (define (oci-container-shepherd-service config)
                         (if (oci-image? image) name image) "."))
                       (start
                        #~(lambda ()
-                           #$@(if (oci-image? image)
-                                  #~((invoke #$(%oci-image-loader
-                                                name image image-reference)))
-                                  #~())
+                           (when #$(oci-image? image)
+                             (invoke #$loader))
                            (fork+exec-command
                             ;; docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
                             (list #$docker "run" "--rm" "--name" #$name
@@ -698,6 +706,9 @@ (define (oci-container-shepherd-service config)
                                   #$image-reference #$@command)
                             #:user #$user
                             #:group #$group
+                            #$@(if (maybe-value-set? log-file)
+                                   (list #:log-file log-file)
+                                   '())
                             #:environment-variables
                             (list #$@host-environment))))
                       (stop
-- 
2.45.1





This bug report was last modified 1 year and 6 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.