Перейти до основного змісту
Версія: 8.x

Робота з Podman

Спільне використання файлів між контейнером і файловою системою Btrfs

нотатка

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

Podman підтримує файлові системи з копіюванням при записі, такі як Btrfs. За допомогою Btrfs середовища виконання контейнерів створюють фактичні підтоми Btrfs для своїх змонтованих томів. pnpm може використовувати цю поведінку для перезвʼязування файлів між різними змонтованими томами.

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

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

Dockerfile
FROM node:20-slim

# corepack - це експериментальна функція в Node.js v20, яка дозволяє
# встановлювати та керувати версіями pnpm, npm, yarn
RUN corepack enable

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

# Вам може знадобитися скопіювати більше файлів, ніж просто package.json у вашому коді
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"