コンテナの起動時間を節約するために、Rust で書かれた API をコンパイルして Docker に配置する準備をしています。そのために、targetにコンパイルしました。
しかし、openssl がエラーを出してしまいました。libssl-dev が認識されないようです。調べてみると、再コンパイルが必要なようです...
しかし、私たちは素晴らしい docker イメージhttps://github.com/emk/rust-musl-builderを見つけました。このイメージには、openssl の musl 環境がすでに設定されています。
したがって、次のようにすれば良いのです:
alias rust-musl-builder='docker run --rm -it -v "$(pwd)":/home/rust/src ekidd/rust-musl-builder'
rust-musl-builder cargo build --release
これで問題ありません
(ただし、rustls に置き換えることで openssl の問題を解決できるようです)
ただし、rustls は現在、reqwest、tokio、tokio-postgres、sqlx など、Rust エコシステムのほとんどとうまく動作します。libpq と OpenSSL が必要なのは Diesel だけです。Diesel や libpq が必要ない場合は次のようにします:
Cargo.toml の機能を使用して、依存関係に rustls を使用するように要求することで、OpenSSL から切り替えることができるか確認してください。
OpenSSL が必要ない場合は、cross build --target=x86_64-unknown-linux-musl --release を使用して、libmusl 向けにバイナリをクロスコンパイルしてみてください。これにより、より多くのプラットフォームがサポートされ、手間が少なくなります!