🐳

Docker buildでError: Can't Find Rust Compilerに困ったら

2023/08/09に公開

結論

Dockerfile
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:$PATH"

背景

深層学習モデルを含むアプリケーションを作るため、DockerにTransformersをインストールしようとしたところ↓のエラーでハマりました。

Error: Can't Find Rust Compiler

Transformersと依存関係のあるSafetensorsというライブラリのインストールにRustのコンパイラが必要であるためです。

DockerイメージはDocker hubのpython:3.9.13を使っていて、これにはRustのコンパイラがインストールされていないようでした。

解決策

Rustのインストール方法はいくつかあるのですが2023/8時点では、公式よりrustupの利用が推奨されているようです。このインストラクションではshellでの対話形式を前提としていますので、Dockerfileの中では対話形式をオフにするためsh -s -- -yとしています。

また、コマンドとして使えるように環境変数にパスを通してあげます。

これでSafetensorsをインストールすることができました。
(Safetensorsに限らず、Rustコンパイラを必要とする状況で有効と思います)

Discussion