đž 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.