メインコンテンツにスキップ
バージョン: 9.x

Podman を使用する

コンテナとホスト間のファイル共有 Btrfs ファイルシステム

注記

この方法は、Podman がサポートするコピーオンライトファイルシステム(Btrfs など)でのみ機能します。Ext4 などの他のファイルシステムの場合、pnpm は代わりにファイルをコピーします。

Podman は、Btrfs のようなコピーオンライトファイルシステムをサポートしています。Btrfs を使用すると、コンテナランタイムはマウントされたボリュームの実際の Btrfs サブボリュームを作成します。pnpm はこの動作を利用して、異なるマウントされたボリューム間でファイルを reflink することができます。

ホストとコンテナ間でファイルを共有するには、ストアディレクトリと `node_modules` ディレクトリをホストからコンテナにマウントします。これにより、コンテナ内の pnpm はホストからのファイルを reflink として自然に再利用できます。

以下は、デモンストレーションのためのコンテナ設定の例です。

Dockerfile
FROM node:20-slim

# corepack is an experimental feature in Node.js v20 which allows
# installing and managing versions of pnpm, npm, yarn
RUN corepack enable

VOLUME [ "/pnpm-store", "/app/node_modules" ]
RUN pnpm config --global set store-dir /pnpm-store

# You may need to copy more files than just package.json in your code
COPY package.json /app/package.json

WORKDIR /app
RUN pnpm install
RUN pnpm run build

以下のコマンドを実行して、Podman イメージをビルドします。

podman build . --tag my-podman-image:latest -v "$HOME/.local/share/pnpm/store:/pnpm-store" -v "$(pwd)/node_modules:/app/node_modules"