intel mac時代に使っていたプロジェクトをM2 macで動かそうとしたらエラーになった。

$ docker compose exec web npm install
node: _ZSt28__throw_bad_array_new_lengthv: symbol not found

このコンテナには(悪手ですが)nginxとnode.jsがマルチステージビルドで入っています。

構成

  • compose.yml ※一部抜粋
  web:
    build: ./infrafile/docker/nginx.dockerfile
  • nginx.dockerfile ※一部抜粋
FROM node:14-alpine as node
FROM nginx:1.18-alpine

結論

nginxのコンテナはarm64でビルドされたものが、
nodeコンテナはamd64でビルドされたものでした。
それは…だめだよね。

  • compose.yml
  web:
    platform: linux/x86_64
    build: ./infrafile/docker/nginx.dockerfile
  • nginx.dockerfile 変更なし