Trabalhando com Podman

Sharing files between a container and the host Btrfs filesystem#

nota

Este método funciona apenas em sistemas de arquivos de cópia em gravação suportados pelo Podman, como o Btrfs. Para outros sistemas de arquivos, como Ext4, o pnpm irá copiar os arquivos.

Podman oferece suporte à sistemas de arquivos de cópia em gravação como o Btrfs. Com Btrfs, a execução de containers cria subvolumes Btrfs reais para seus volumes montados. pnpm can use this behavior to reflink the files between different mounted volumes.

To share files between the host and the container, mount the store directory and the node_modules directory from the host to the container. Isso permite ao pnpm de dentro do container naturalmente reutilizar os arquivos do hospedeiro como reflinks.

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.

Abaixo temos um exemplo de configuração de container para demonstração:

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

Execute o seguinte comando para construir a imagem do podman:

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