10:52:23 # Life podmanを使ってRustの開発環境を整備する。 なんかRustの最新版が使いたいこともあるけどパッケージとして入れるのは嫌だなぁと思っていたらpodmanでやればいいんじゃないかという気がしてきたのでメモ。 まずCargoのインデックス更新と依存関係のビルドのために/usr/local/cargoに中身を追加するためのDockerfileを用意した。src/以下はビルドする必要ないんだけどまぁよい。 一番遅いのはメタデータのダウンロードっぽいので関係ないプロジェクトのCargo.tomlでもよいのかもしれない。そこは未確認。
FROM docker.io/rust RUN apt update && apt full-upgrade -y && apt clean COPY . . RUN cargo build
podman buildのために、.dockerignoreにはtargetを追加、なぜかというと1GBくらいこのディレクトリに存在していて直接必要ではないから。ここはなんかもっと違う方法があるかも。
target
一連の作業は高速に動くことがわかった。cargo build 実行時のオーバヘッドは400msくらいなのでまぁ気にならない。
podman pull docker.io/rust podman build . -t rustbuild # なんか名前をつける # 毎回のビルド podman run -it --rm -v $(pwd):$(pwd):rw -w $(pwd) rustbuild cargo build podman run -it --rm -v $(pwd):$(pwd):rw -w $(pwd) rustbuild cargo test # 実行: ${PORT} にHTTPサーバ動かしている場合 podman run -a --rm -v $(pwd):$(pwd):rw -w $(pwd) --publish ${PORT}:${PORT} rustbuild cargo run # ゴミ掃除 podman ps -a # 何が残っているか確認 podman kill -a # うごいているのを殺す ちょっとなんで残るのかよくわかってない podman rm -a # 残っているデータを消す。 --rm つけ忘れたやつとか podman system prune # いらないデータを消す