ecr

All posts in this category.

Arm64 ou multiarch build sous Jenkins x86 / ecr

Docker Buildx est une extension de Docker qui permet de créer des images Docker pour plusieurs plates-formes, y compris des plates-formes d’architecture différentes. Il permet également de créer des images pour plusieurs architectures à la fois, ce qui facilite la création de conteneurs Docker multi-plateformes.

Les commandes ci-dessus créent un environnement de build pour la plate-forme arm64. La commande « docker buildx create –name arm64 –platform linux/arm64 » crée un environnement de build nommé « arm64 » avec la plate-forme Linux/arm64 configurée. La commande « docker buildx inspect arm64 –bootstrap » configure l’environnement de build pour utiliser la plate-forme arm64. La commande « docker buildx use arm64 » active l’environnement de build pour la plate-forme arm64.

Enfin, la commande « docker run –rm –privileged multiarch/qemu-user-static –reset -p yes » configure l’environnement pour utiliser QEMU, un émulateur de processeur, pour exécuter des binaires de différentes architectures. Cela permet de construire des images Docker pour des plates-formes d’architecture différentes, même si l’hôte de build ne prend pas en charge ces plates-formes directement.

#!/bin/bash

#user with limited permissions 
export AWS_REGION="eu-central-1"
export AWS_ACCESS_KEY_ID="***"
export AWS_SECRET_ACCESS_KEY="***"
export KUBECONFIG=/home/ubuntu/kubeconfig

aws ecr get-login-password | docker login --username AWS --password-stdin ***.dkr.ecr.eu-central-1.amazonaws.com/app-prod

docker buildx create --name arm64 --platform linux/arm64
docker buildx inspect arm64 --bootstrap
docker buildx use arm64

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

#get .env from secrets manager
aws secretsmanager get-secret-value --secret-id app-prod --query SecretString --output text| jq -r 'to_entries|map("\(.key)=\(.value|tostring)")|.[]' > files/.env

docker buildx build --push --platform linux/arm64 -t ***.dkr.ecr.eu-central-1.amazonaws.com/app-prod:$GIT_COMMIT -f Dockerfile . --no-cache
sleep 10

#update daemonset in k8s
kubectl set image daemonset/generator-app-ds -n prod app=***.dkr.ecr.eu-central-1.amazonaws.com/app-prod:$GIT_COMMIT