2021年9月20日 (月曜日)

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