pack: Allow setting a custom image tag for Docker images

Previously, the image repository name was automatically computed from
the packages in the manifest without allowing the user to set a custom
one. As such, changing the packages in the manifest would result in a
new image name. Thereby requiring updating documentation et cetera when
using `docker load` directory on the resulting image.

Inspired by `docker build -t`, this commit adds a new Docker-specific
option to `guix pack` which allows setting a custom repository name for
the resulting image. If this option is not specified, pack falls back
to computing the name from the manifest. Therefore, this change is
entirely backwards compatible.

* guix/scripts/pack.scm (guix-pack): Add --image-tag option.
(%docker-format-options): New constant.
(show-docker-format-options): New procedure.
(show-docker-format-options/detailed): New procedure.
(docker-image): Allow setting a custom
repository name for the created docker image via extra-options.
* doc/guix.texi (Invoking guix pack)[docker]: Document --image-tag option.

Signed-off-by: Sören Tempel <soeren@soeren-tempel.net>
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
This commit is contained in:
Sören Tempel 2023-10-14 11:38:56 +02:00 committed by Mathieu Othacehe
parent e4fb70e2e8
commit 373ec2cf8c
No known key found for this signature in database
GPG Key ID: 8354763531769CA6
1 changed files with 6 additions and 3 deletions

View File

@ -7314,9 +7314,12 @@ specified binaries and symlinks.
@item docker
This produces a tarball that follows the
@uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md,
Docker Image Specification}. The ``repository name'' as it appears in
the output of the @command{docker images} command is computed from
package names passed on the command line or in the manifest file.
Docker Image Specification}. By default, the ``repository name'' as it
appears in the output of the @command{docker images} command is computed
from package names passed on the command line or in the manifest file.
Alternatively, the ``repository name'' can also be configured via the
@option{--image-tag} option. Refer to @option{--help-docker-format} for
more information on such advanced options.
@item squashfs
This produces a SquashFS image containing all the specified binaries and