Giacomo Leidi via Guix-patches via writes: > * 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) ^^^^^^^^^^^^^^^^^^^^ i remove it, because it is not "". > +@item @code{log-file} (default: @code{""}) (type: string) ^^^^^^ 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. > + > @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)) if (oci-image? image) return #f ``` (when #f (invoke #f)) ``` This is noise in the file. > (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