Tracim sur mon NAS, partie 1b: Partage public d'une image multiplateforme avec Buildah
Une autre façon de faire, publiez publiquement une image !
Si vous avez lu mon précédent article , j’expliquais qu’il était facile avec Buildah de produire une image pour une plateforme différente.
Dans cet article-ci, je reviens sur cette procédure, en explorant la possibilité de tirer plutôt parti du serveur de stockage d’image public tout en proposant des images multi-architectures.
Le principe d’une image multi-architecture, est qu’avec un même nom, il est possible depuis des systèmes de différente architecture processeur d’utiliser le même nom d’image. Il ne s’agit pas à proprement parler d’image multi-plateforme, mais d’un alias unique permettant à chaque système de récupérer l’image compatible.
J’ai pour ce faire suivis attentivement ce tutoriel, merci à Dan Manners. Cet article n’est donc qu’une application un peu plus concrète de son article.
Mise en application
# dépendances nécessaire sous debian
sudo apt install podman buildah git qemu-user-static qemu git
On récupère le code nécessaire pour la génération de l’image :
cd /tmp
git clone --depth 1 --branch release_04.05.00 https://github.com/tracim/tracim.git tracim
cd tracim//tools_docker/Debian_Uwsgi_ARM64
Ce qui aboutit en changeant quelques points au script ci-dessous.
Avant de l’utiliser :
- Changer le en fonction de votre cas, en particulier la variable
USER
. - Si vous utilisez le docker registry, créer un token d’authentification avec les bons droits pour pouvoir pousser sur le github registry.
#!/bin/bash
set -e
export TRACIM_VERSION="4.5"
# Set your manifest name
export MANIFEST_NAME="tracim-${TRACIM_VERSION}-no-vtk"
# Set the required variables
export BUILD_PATH="/tmp/tracim/tools_docker/Debian_Uwsgi_ARM64/"
export REGISTRY="ghcr.io"
export USER="inkhey"
export IMAGE_NAME="tracim"
export IMAGE_TAG="${TRACIM_VERSION}-no-vtk"
buildah logih $REGISTRY
# Create a multi-architecture manifest
buildah manifest create ${MANIFEST_NAME}
# Build your amd64 architecture container
#buildah bud \
--tag "${REGISTRY}/${USER}/${IMAGE_NAME}:${IMAGE_TAG}" \
--manifest ${MANIFEST_NAME} \
--arch amd64 \
${BUILD_PATH}
# Build your arm64 architecture container
buildah bud \
--tag "${REGISTRY}/${USER}/${IMAGE_NAME}:${IMAGE_TAG}" \
--manifest ${MANIFEST_NAME} \
--arch arm64 \
${BUILD_PATH}
# Push the full manifest, with both CPU Architectures
buildah manifest push --all ${MANIFEST_NAME} "docker://${REGISTRY}/${USER}/${IMAGE_NAME}:${IMAGE_TAG}"
Les images enfin générées si tout s’est bien passé, il est enfin possible d’aller les récupérer. Les miennes sont ainsi disponible ici
Vous pouvez ainsi les récupérer sous ce nom : ghcr.io/inkhey/tracim:4.5-no-vtk
que ce soit depuis une machine amd64 ou arm64.