Creating pylith-devenv Docker image#
Setup#
Setup emulation libraries (taken from https://docs.docker.com/build/building/multi-platform/)
# Install emulation packages
sudo apt install qemu qemu-user-static binfmt-support
# Install binfmt stuff
docker run --rm tonistiigi/binfmt --install all
# Verify the F flag is set
cat /proc/sys/fs/binfmt_misc/qemu/aarch64
# Try running container using emulation
docker run --rm -ti --platform=linux/arm64 ubuntu:24.04 /bin/bash
Create a multiple-architecture builder, multiarch.
docker buildx create --name multiarch --driver docker-container --bootstrap
Note
You may need docker-credential-pass in your PATH.
Build Docker image#
Build and push the Docker image. This will create a docker image with layers for both architectures. When a user pulls the image from the registry, only the layers for that computer’s architecture are downloaded.
# Select the multiarch builder
docker buildx use multiarch
# Build and push the image
docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/geodynamics/pylith_installer/pylith-devenv --push -f docker/pylith-devenv .
# Select the multiarch builder
docker buildx use multiarch
# Build using DOI certs
docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/geodynamics/pylith_installer/pylith-devenv --build-arg BUILD_ENV=certs-doi --push -f docker/pylith-devenv .