🐳
Docker buildでError: Can't Find Rust Compilerに困ったら
結論
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