🐋

terraformのarm64対応dockerイメージ

2022/01/18に公開

terraformをApple M1上のdockerで走らせたかったのですが、2022年1月18日時点でterraformの公式なarm64のdockerイメージは配られていません。

その背景はここで説明されています。
時期は定かではありませんがいつかはリリースされるようです。
https://github.com/hashicorp/terraform/issues/25571#issuecomment-1007838498

もちろんx86_64なイメージをエミュレーションで動かすことも可能ですが、体感できる程度には処理速度は遅いです(以前、M1上のdockerで竹内関数を使いarm64とamd64の処理速度を比較したところ13〜14倍の差はありました)。

仕方ないので自分でビルドすることになるのですが、上記記載のissueに上がってるexecutableを持ってくるステップを省きたいなと思っていたところ、ありがたいことにalpine:edgeが最新のterraformをパッケージ化していることに気づきました。
https://pkgs.alpinelinux.org/package/edge/community/aarch64/terraform

ということで、最低限のDockerfileがこちらです。
バージョン固定できていないので常に最新のterraformがインストールされるようになりますが。

FROM alpine:edge
RUN apk add --no-cache terraform
ENTRYPOINT ["terraform"]

Install git and openssh using the Alpine Linux package manager, which is optional but helps with accessing remote services over TLS and with cloning external Terraform modules from Git repository sources.

とのことなので必要に応じてgit, opensshを追加してください。

もしdockerイメージをマルチアーキ対応でクロスビルドしたいということであればbuildxを使えばできます。

docker buildx build --push --platform linux/amd64,linux/arm64 -t yourtag

参考:
https://docs.docker.com/buildx/working-with-buildx/

Discussion