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 # いらないデータを消す