BuringStraw

BuringStraw

rustのコンパイルターゲットをmuslに設定すると、opensslでエラーが発生する問題を解決する

コンテナの起動時間を節約するために、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 向けにバイナリをクロスコンパイルしてみてください。これにより、より多くのプラットフォームがサポートされ、手間が少なくなります!

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。