更新Docker后,我正在努力构建我的项目。
我以前的工作DockerFile:
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2
&& mkdir -p ~/.gnupg
&& chmod 600 ~/.gnupg
&& echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf
&& apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E5267A6C
&& apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C300EE8C
&& echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ppa_ondrej_php.list
&& apt-get update
&& apt-get install -y php7.4-cli php7.4-dev
php7.4-pgsql php7.4-sqlite3 php7.4-gd
php7.4-curl php7.4-memcached
php7.4-imap php7.4-mysql php7.4-mbstring
php7.4-xml php7.4-zip php7.4-bcmath php7.4-soap
php7.4-intl php7.4-readline php7.4-pcov
php7.4-msgpack php7.4-igbinary php7.4-ldap
php7.4-redis
&& php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
&& curl -sL https://deb.nodesource.com/setup_15.x | bash -
&& apt-get install -y nodejs
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list
&& apt-get update
&& apt-get install -y yarn
&& apt-get install -y mysql-client
&& apt-get install -y postgresql-client
&& apt-get -y autoremove
&& apt-get clean
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
在我的Docker-Compose
中使用平台:platform: linux/x86_64
。
然而,在更新Docker后,它现在不起作用了,我不知道为什么。
现在返回的响应为:
执行此操作后,将使用116 MB的额外磁盘空间。获取:1https://deb.nodesource.com/node_15.x焦点/主臂64节点arm64 15.14.0-deb-1nodesource1[24.8 MB]debconf:延迟包配置,因为没有安装apt-utils在2秒内获取24.8 MB(12.5 MB/s(选择以前未选择的包nodejs。(阅读数据库当前安装了21576个文件和目录。(正在准备解压缩/nodejs_15.14.0-deb-1nodesource1_arm64.deb。。。正在解压缩nodejs(15.14.0-deb-1nodesource1(…正在设置nodejs(15.14.0-deb-1nodesource1(…正在处理man数据库的触发器(2.9.1-1(…警告:不应解析apt键输出(stdout为不是终端(gpg:找不到有效的OpenPGP数据。分段故障1
发生
错误:*状态:命令'/bin/sh-c apt-get-update&;apt-get-install-y-gnup-gosu-curl-ca证书zip解压缩gitsupervisor sqlite3 libcap2 bin libpng dev python2&;mkdir-p~/.gnpg&;chmod 600~/.gnupg&;回声;disable-ipv6">gt;~/.gnpg/dirmngr.conf&;apt键adv--homedir~/.gnupg--密钥服务器hkp://keyserver.ubuntu.com:80——recv键E5267A6C&;apt-key adv--homedir~/.gnpg--密钥服务器hkp://keyserver.ubuntu.com:80--recv密钥C300EE8C&;回声;debhttp://ppa.launchpad.net/ondrej/php/ubuntu焦点干线">/etc/apt/sources.list.d/ppa_ondrej_php.list&;apt-get更新
&;apt-get-install-y php7.4-cli php7.4-dev php7.4-pgsqlphp7.4-sqlite3 php7.4-gd php7.4-curl php7.4-mmacached
php7.4-imap php7.4-mysql php7.4-mbstring php7.4-xml php7.4-zipphp7.4-bcmath php7.4-soap php7.4-intl php7.4-readlinephp7.4-pcov php7.4-msgpack php7.4-igbinary php7.4-ldap
php7.4-redis&;php-r"读取文件('http://getcomposer.org/installer'("|php----install dir=/usr/bin/--filename=composer&;卷曲-sLhttps://deb.nodesource.com/setup_15.x|bash-&;apt-get安装-y nodejs&;卷曲-sShttps://dl.yarnpkg.com/debian/pubkey.gpg| apt键添加-&;回声;debhttps://dl.yarnpkg.com/debian/稳定的主">etc/apt/sources.list.d/yarn.list&;apt-get-update&;apt-get-install-y纱线&;apt-get-install-y-mysql客户端&;apt-get-install-y-postgresql客户端&;apt-get-y自动删除
&;易于清洁&;rm-rf/var/lib/apt/lists/*/tmp/*/var/tmp/*'返回了一个非零代码:2,代码:2
尝试的步骤(指定Ubuntu版本以防出现一些不兼容(:
FROM --platform=linux/arm64/v8 ubuntu:18.04
错误1:无法定位包python2
FROM --platform=linux/arm64/v8 ubuntu:21.04
错误1:以下包有未满足的依赖项:libxml2:依赖于:libicu66(>=66.1-1~(,但它不可安装php7.4-intl:取决于:libicu66(>=66.1-1 ~(,但它不可安装
错误2:无法更正问题,您持有损坏的包。1.出现错误:状态:命令'/bin/sh-c[….]返回非零代码:100,代码:100
FROM --platform=linux/arm64/v8 ubuntu:22.04
错误1:以下包有未满足的依赖项:libxml2:依赖于:libicu66(>=66.1-1~(,但它不可安装php7.4-intl:取决于:libicu66(>=66.1-1 ~(,但它不可安装
错误2:无法更正问题,您持有损坏的包。1.出现错误:状态:命令'/bin/sh-c[….]返回非零代码:100,代码:100
Docker Compose:
我已经根据文档将我的平台指定为platform: linux/amd64
,而不是platform: linux/x86_64
。尝试使用linux/arm64
,但也不起作用(产生了相同的错误(。
解决了这个问题,我昨天晚上是个白痴。
解决方案A:(在我的案例中(:降级回Docker Desktop 4.0.0版本。我使用的是Intel Images,所以我必须指定x86_64
。
一个更好的解决方案是将我的所有图像更改为基于Arm64和Intel的图像,并且它与Ubuntu+Mysql兼容(目前docker建议暂时使用MariaDB(
然而,鉴于Docker仍然相对不稳定,随时可能停止您的构建过程,我建议任何人都要谨慎地更新M1的Docker!