跳到主要內容
版本: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"