Docker – 使用Macos buildx制作image同时支持x86和arm

1. 在orbstack设定做更改:settings > docker > 改用containerd

    {
      "features" : {
        "containerd-snapshotter" : true
      }
    }

    2. 可以去到dockerhub 参考原生版本支持的环境,这里的例子是php

    https://hub.docker.com/_/php/tags?name=8.0-apache

    3. 编写dockerfile

    FROM php:8.0-apache
    
    RUN apt-get update && apt-get install -y \
        git \
        zip \
        curl \
        sudo \
        unzip \
        libgd-dev \
        libicu-dev \
        libbz2-dev \
        libpng-dev \
        libjpeg-dev \
        libmcrypt-dev \
        libreadline-dev \
        libfreetype6-dev \
        g++ \
        libssl-dev \
        zlib1g-dev \
        libonig-dev \
        libxml2-dev \
        libicu-dev \
        zip \
        libzip-dev
    
    # Clear cache
    RUN apt-get clean && rm -rf /var/lib/apt/lists/*
    
    RUN docker-php-ext-install mysqli pdo pdo_mysql bz2 intl iconv bcmath opcache calendar gd zip mbstring
    
    RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        && docker-php-ext-configure gd --with-freetype --with-jpeg \
        &&  docker-php-ext-install -j$(nproc) gd \
        && pecl install -o -f redis \
        &&  rm -rf /tmp/pear \
        &&  docker-php-ext-enable redis

    4. 执行buildx命令,我使用的container registry是aws的,以下的命令是build完之后就直接push到registry了

    PowerShell
    docker buildx build --no-cache \
    --platform=linux/386,linux/arm64/v8,linux/arm/v7,linux/arm/v5,linux/amd64 \
    -f dockerfile \
    -t 233333.dkr.ecr.ap-southeast-1.amazonaws.com/php:8.0-apache-x86-arm \
    --push .
    PowerShell

    Loading

    Facebook评论