我自己电脑是apple m1 pro芯片,也就是arm64v8,现在想给自己电脑制作一个镜像,本地制作速度太慢了,我买了个香港的服务器,是amd64的。
我的Dockerfile
FROM alpine
RUN apk update
RUN apk add vim
RUN apk add curl
RUN apk add nginx
RUN apk add php
RUN apk add php8-dom
RUN apk add php8-ctype
RUN apk add php8-curl
RUN apk add php8-fpm
RUN apk add php8-gd
RUN apk add php8-intl
RUN apk add php8-json
RUN apk add php8-mbstring
RUN apk add php8-pecl-mcrypt
RUN apk add php8-mysqlnd
RUN apk add php8-opcache
RUN apk add php8-pdo
RUN apk add php8-pdo_mysql
RUN apk add php8-posix
RUN apk add php8-session
RUN apk add php8-xml
RUN apk add php8-iconv
RUN apk add php8-phar
RUN apk add php8-openssl
RUN apk add php8-zip
RUN apk add php8-pecl-ssh2
RUN apk add php8-zlib
RUN apk add php8-redis
RUN apk add php8-pecl-memcached
RUN apk add php8-imap
RUN apk add php8-simplexml
RUN apk add php8-xmlreader
RUN apk add php8-xmlwriter
RUN apk add php8-fileinfo
RUN apk add php8-tokenizer
RUN apk add php8-bcmath
RUN apk add tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
RUN apk del tzdata
RUN rm -rf /var/cache/apk/*
我在服务器试过了docker build -t demo .
是没有问题的,说明Dockerfile没问题。
然后我的构建器也是支持arm64v8的。
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
ecstatic_curran docker-container
ecstatic_curran0 unix:///var/run/docker.sock running linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
mybuilder * docker-container
mybuilder0 unix:///var/run/docker.sock running linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
default docker
default default running linux/amd64, linux/386, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6
我的编译命令
sudo docker buildx build --platform linux/arm64 -t hahaha/self-alpine-nginx-php-fpm:php8 --push .
报错
#36 5.145 ERROR: unable to select packages:
#36 5.402 php8-dom (no such package):
#36 5.402 required by: world[php8-dom]
------
Dockerfile:7
--------------------
5 | RUN apk add nginx
6 | RUN apk add php
7 | >>> RUN apk add php8-dom
8 | RUN apk add php8-ctype
9 | RUN apk add php8-curl
--------------------
error: failed to solve: process "/bin/sh -c apk add php8-dom" did not complete successfully: exit code: 1
是不是你源的问题,看看服务器上的源和你本地的源,是不是不一样,报错里写了,没有找到php8-dom 这个包吗