🕸 Tracim sur mon NAS, partie 1b: Partage public d'une image multiplateforme avec Buildah

| ~ 2 mins | 353 mots

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 :

#!/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-vtkque ce soit depuis une machine amd64 ou arm64.

🥳

La Suite