M1芯片调整为docker-compose.yml?
Adjustment to docker-compose.yml for M1 chip?
我有一个 docker-compose.yml 构建了大约 8 个容器,主要由 mysql、postgres、php-nginx 和其他一些包组成定制构建。生产版本 运行s 在 UBUNTU 主机上,我的开发包 运行s 在 Mac OS Catalina 上,带有英特尔芯片。整个事情也在 Github.
上的私人仓库中维护
一位合作者有一台 M1 Mac,我可能会很快升级到 M1 Mac,MacBook Pro 或 27" iMac 可能会在今年晚些时候发布。
我们尝试在他的 M1 Mac 和 运行 上安装软件包遇到了一些问题,而且可能更多。
一个问题似乎与撰写文件中的 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
看起来有几种方法可以按照此处的建议解决该问题:
这里:
https://dev.to/lakhansamani/create-docker-image-on-apple-silicon-m1-mac-2f75
通过在 CLI 或平台上指定 --platform linux/amd64: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 构建的其他问题,但我们还没有走到那一步。
合作者也有一台 Windows 机器,我认为它可以工作,但我很快就会转向 M1 Mac。
只是在寻找处理该问题的最佳方法,这样我们就不必为不同的体系结构保留单独的构建。
这个比较详细一点:
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 进行开发。
我有一个 docker-compose.yml 构建了大约 8 个容器,主要由 mysql、postgres、php-nginx 和其他一些包组成定制构建。生产版本 运行s 在 UBUNTU 主机上,我的开发包 运行s 在 Mac OS Catalina 上,带有英特尔芯片。整个事情也在 Github.
上的私人仓库中维护一位合作者有一台 M1 Mac,我可能会很快升级到 M1 Mac,MacBook Pro 或 27" iMac 可能会在今年晚些时候发布。
我们尝试在他的 M1 Mac 和 运行 上安装软件包遇到了一些问题,而且可能更多。
一个问题似乎与撰写文件中的 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
看起来有几种方法可以按照此处的建议解决该问题:
这里:
https://dev.to/lakhansamani/create-docker-image-on-apple-silicon-m1-mac-2f75
通过在 CLI 或平台上指定 --platform linux/amd64: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 构建的其他问题,但我们还没有走到那一步。
合作者也有一台 Windows 机器,我认为它可以工作,但我很快就会转向 M1 Mac。
只是在寻找处理该问题的最佳方法,这样我们就不必为不同的体系结构保留单独的构建。
这个比较详细一点:
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 进行开发。