使用 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"