Робота з Podman

Sharing files between a container and the host Btrfs filesystem#

нотатка

Цей метод працює лише на підтримуваних Podman файлових системах з копіюванням при записі, таких як Btrfs. Для інших файлових систем, таких як Ext4, pnpm замість цього скопіює файли.

Podman підтримує файлові системи з копіюванням при записі, такі як Btrfs. За допомогою Btrfs середовища виконання контейнерів створюють фактичні підтоми Btrfs для своїх змонтованих томів. pnpm can use this behavior to reflink the files between different mounted volumes.

Щоб поділитися файлами між хостом і контейнером, змонтуйте теку store і теку node_modules з хосту в контейнер. Це дозволяє pnpm всередині контейнера природним чином повторно використовувати файли з хосту як рефлінки.

important

Only mount a host pnpm store into containers you trust. A container with write access to the mounted store can affect later installs that reuse that store.

Нижче наведено приклад налаштування контейнера для демонстрації:

Declare Node.js in devEngines.runtime in your package.json. The pnpm install command below will install the declared version automatically.

Dockerfile
FROM ghcr.io/pnpm/pnpm:11

WORKDIR /app

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

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"