Как мы подготовили наше приложение для запуска на M1 (Apple Silicon) (3 серии деталей)
Это последний пост в серии о том, как мы подготовили наше приложение для запуска на M1 (Apple Silicon).
В предыдущей части мы говорили о создании нескольких изображений архитектуры ЦП.
Этот пост проведет вас через то, как реализовать конвейер для создания изображений контейнеров с несколькими архитектурой, используя Google Cloud Platform’s Облачная сборка или Действия GitHub Анкет
Как вы, возможно, знаете из предыдущего поста, чтобы создать многоартные контейнерные изображения, нам нужно настроить виртуальную среду и запустить Docker buildx
Анкет
Давайте настроим такие конвейеры для сборки для некоторых популярных решений CI/CD.
Облачный сборка
Облачная сборка это сервис, которая выполняет ваши сборки в инфраструктуре Google Cloud Platform.
Для запуска многоартных контейнерных изображений.
steps: - name: gcr.io/cloud-builders/docker args: - run - '--privileged' - 'linuxkit/binfmt:v0.7' id: initialize-qemu - name: gcr.io/cloud-builders/docker args: - buildx - create - '--name' - mybuilder id: create-builder - name: gcr.io/cloud-builders/docker args: - buildx - use - mybuilder id: select-builder - name: gcr.io/cloud-builders/docker args: - buildx - inspect - '--bootstrap' id: show-target-build-platforms - name: gcr.io/cloud-builders/docker args: - buildx - build - '--platform' - $_DOCKER_BUILDX_PLATFORMS - '-t' - 'gcr.io/$PROJECT_ID/hello-world:latest' - '--push' - . id: build-multi-architecture-container-image options: env: - DOCKER_CLI_EXPERIMENTAL=enabled substitutions: _DOCKER_BUILDX_PLATFORMS: 'linux/amd64,linux/arm64'
Приведенная выше конфигурация создает конвейер для настройки среды сборки ( initiaze-qemu
, create-builder
, select-builder
и show-target-build-platforms
), чтобы построить многоарный контейнерный изображение и подтолкнуть его к Реестр контейнеров на платформе Google Cloud ( build-mult-architecture-container-image
step).
Чтобы подтолкнуть к другому реестру контейнеров (например, Docker Hub) обновить Build-Mult-Architecture-Container-Image
шаг соответственно.
Пожалуйста, проконсультируйтесь с документацией Cloud Build, чтобы получить информацию о том, как Триггер сборки (вручную или автоматически).
Действия GitHub
Если вы предпочитаете использовать действия GitHub вместо облачной сборки, это также возможно.
Конфигурация конвейера для создания многоартных контейнерных изображений является следующим:
name: ci on: push: jobs: buildx: runs-on: ubuntu-latest steps: - name: checkout code uses: actions/checkout@v2 - name: setup qemu uses: docker/setup-qemu-action@v1 - name: setup buildx id: buildx uses: docker/setup-buildx-action@v1 - name: available platforms run: echo ${{ steps.buildx.outputs.platforms }} - name: login to docker hub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: build the image run: | docker buildx build \ --push \ --tag ${{ secrets.DOCKER_USERNAME }}/hello-world:latest \ --platform linux/amd64,linux/arm64 .
Чтобы заставить его работать, вам нужно настроить немного Секреты на GitHub :
Docker_username
— Ваше имя пользователя на Docker HubDocker_token
— Ваш концентратор Docker доступ токен
Вывод
Это был последний пост в серии, и подвести итог, давайте повторим ключевые моменты о том, как подготовить приложение для M1 (Apple Silicon):
- Используйте, чтобы легко построить приложения для различных операционных систем
- Создайте многоартные контейнерные изображения с
Docker Buildx
- Использовать облачную сборку или действие GitHub для автоматизации сборки
Как мы подготовили наше приложение для запуска на M1 (Apple Silicon) (3 серии деталей)
Оригинал: «https://dev.to/tidalmigrations/automating-multi-arch-container-images-builds-we-used-google-cloud-build-but-github-actions-would-also-work-clb»