Docker M1-在最新更新的Docker Desktop 4.2.0上使用Ubuntu+MySQL:/bin/sh错



更新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!

最新更新