我有一个docker-compose.yml,它构建了大约8个容器,主要由mysql、postgres、php-nginx和其他一些定制构建的包组成。生产版本在UBUNTU主机上运行,我的开发包在带有英特尔芯片的Mac OS Catalina上运行。整个事情也在Github上的私人存储库中维护。
合作者有一台M1 Mac,我可能很快就会升级到M1 Mac,或者是MacBook Pro,或者是今年晚些时候发布的27英寸iMac。
我们试图在他的M1 Mac上安装该软件包,但遇到了一些问题,可能还会出现更多问题。
一个问题似乎与compose文件中的MySQL构建有关(一些项目已删除)
mysql_db:
image: mysql:8.0.26
container_name: mysql_db
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
--max-allowed-packet=67108864
#--general-log=TRUE
#--general-log-file=/var/lib/mysql/mysql-log.log
restart: unless-stopped
ports:
- "3333:3306"
healthcheck:
test: mysqladmin ping -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PASSWORD
security_opt:
- seccomp:unconfined
tty: true
environment:
TZ: ""
MYSQL_ROOT_PASSWORD: ''
MYSQL_USER: ''
MYSQL_PASSWORD: ''
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- ./MySQL_DB:/var/lib/mysql/
- ./mysql_init:/docker-entrypoint-initdb.d
看起来有几种方法可以解决这个问题,如下所示:
Docker(苹果硅/M1预览版)MySQL”清单列表条目中没有与linux/arm64/v8匹配的清单
这里:
https://dev.to/lakhansamani/create-docker-image-on-apple-silicon-m1-mac-2f75
通过在CLI上指定--platform linux/amd64或在compose文件中指定platform:linux/amd64。
在我的一个DockerFiles中,我还拥有:
COPY wkhtmltox_0.12.6-1.buster_amd64.deb /
RUN dpkg -i wkhtmltox_0.12.6-1.buster_amd64.deb
这是一个用于wkhtmltopdf的debian软件包(我认为它支持QT)
这里有预构建包的下载:
https://wkhtmltopdf.org/downloads.html
那里有该软件包的ARM64版本。
只是想弄清楚如何配置构建(docker-compose.yml、DockerFiles等),以便它基本上可以构建在任何体系结构上。
如果有办法检测docker compose中的架构。yml和DockerFiles,这可能是最好的,这样它就可以构建适当的mysql包,并为whtmltopdf使用适当的debian包。我怀疑我可能会在php、postgres和nginx构建中遇到其他问题,但我们还没有走到这一步。
合作者也有一台视窗电脑,我认为这是可行的,但我很快就会转向M1苹果电脑。
只是在寻找最好的方法来处理这个问题,这样我们就不必为不同的体系结构保留单独的构建。
这是更详细的一点:
https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/
在我的例子中,. deb包变体可能是唯一需要修复的其他项目,也许我可以使用apt-get来代替,但我可能会因此失去QT支持。
对于M1处理器,必须指定平台
services:
mysql_db:
platform: linux/x86_64
image: mysql:8.0.26
或者,您可以使用MariaDB进行开发。
是否需要专门发布OpenJDK来支持新的苹果M1芯片? 我看到目前有下载用于macOS/OS的JDK
我看到目前有用于macOS/OS X的JDK下载,但这些似乎只适用于x86处理器。那是正确的吗?如果是,我可以从哪里下载用于M1的OpenJDK版本?
我所做的就是打开拉链,当我试图打开Android Studio时,它立即崩溃。我在码头上看到图标最多两秒钟,然后它就崩溃了。 我还尝试了使用最新的金丝雀构建,并得到了相同的结果。我查过了,很明显JDK和它捆绑在一起,所以我不需要提前安装。 我绝对使用运行macOS蒙特雷测试版的macOS的M1/ARM版本。 追溯错误非常长,我无法确定问题出在哪里,我也不确定我是否应该真的把整件事发布出去。我感到困
docker-compose.yml 启动一个 order 和 一个 peer 节点。 orderer: image: hyperledger/fabric-orderer environment: - ORDERER_GENERAL_LEDGERTYPE=ram - ORDERER_GENERAL_BATCHTIMEOUT=10s - ORDERER_GENERAL_BAT
docker-compose.yml 启动一个 5 个节点的服务,包括 zookeeper、fabric-order 和 3 个 kafka 节点。
我尝试在MacBook上运行Android模拟器,但它不起作用,AVD管理器显示错误,并显示消息:无法启动AVD。似乎这个问题的根源在于M1芯片不支持虚拟化,AVD需要VT-x来获取x86图像。大多数图像都基于x86,并且最新的Android版本不提供基于arm的图像。是否有任何解决方案可以绕过此问题?(使用物理设备和旧映像除外)