当前位置: 首页 > 知识库问答 >
问题:

M1芯片docker-compose.yml调整?

谷梁迪
2023-03-14

我有一个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支持。

共有1个答案

越飞鸾
2023-03-14

对于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的图像。是否有任何解决方案可以绕过此问题?(使用物理设备和旧映像除外)