🐘
Apple Silicon でJavaのSpring使ったアプリのコンテナビルドしようとしたらうまくいかなかったことメモ
はじめに
タイトルにあるように、Apple Silicon で Java の Spring 使ったアプリのコンテナビルドしようとしたらうまくいかなかったことのメモ
ふわふわした情報だけど、こうしたら動かなくて、こうしたら動いたよってメモです。
やろうとしたこと
- IBM Cloud Code Engine ってコンテナプラットフォームで Web アプリをデプロイするために、Apple Silicon の Macbook で、Java の Spring 使ったアプリのイメージをビルドしようとした
したこと
-
gradle
のイメージを使って Dockerfile を作った -
--platform linux/amd64
をつけてdocker build
しようとした
困ったこと
- すると、1 時間くらい経っても終わらない・・・
試したこと
- ChatGPT に聞いてみた。Docker 環境のリソース設定見直せとか、マルチスレッドビルド活用しろとか言われた。ピンとこないので無視。
- 検索した。下記が見つかった。ちょっと違う感じするけど、ベースのイメージを
FROM amd64/gradle:7.5.1-jdk17
にしてみた
結果
- ビルドできた
- デプロイしたら期待通り動いた
理解
- Docker image にはマルチプラットフォームイメージというものがある
- それに対応していれば、
--platform
をつければ CPU のアーキテクチャを指定できるはず - gradle のイメージは
amd64
にもarm64v8
にも対応している - なので、
--platform
で十分な気がする。だけど、なぜか終わらなかった - よくわからんけど、Dockerfile のベースイメージのところで明記する必要あった
感想
- モヤモヤするけど、動いたらからヨシ!
Discussion