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
Facebook评论