薄い知識で適当にやってたらはまった。
NODE_ENV
はnodejsの実行モードを切り替える環境変数でいろいろなところで使われているようだ。おそらくサーバーの実行モードも制御している。
yarn buildしたとき、NODE_ENVを設定しない状態ならビルドが通っていたのが、Dockerfileの中で NODE_ENV=production
を指定するとビルドが通らなくなってしまった。
(実際にはこれが原因ということに気づかず、Dockerだからかな?とかMacとLinuxの違いかな?とかそっちばかり考えて(そんなわけないのだが)はまってしまっていた。
結論、 NODE_ENV=production
とした状態で、 yarn install
すると、package.jsonにあるdevDependenciesをインストールしなくなる。
Yarn will not install any package listed in devDependencies if the NODE_ENV environment variable is set to production.
devDependenciesに(誤って)入っていて、ビルドに必要なライブラリをdependenciesのほうに移して、無事解決。