Pular para o conteúdo principal
Versão: 9.x

Trabalhando com Podman

Compartilhando arquivos entre um Container e o sistema de arquivos Btrfs hospedeiro

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. O pnpm pode aproveitar deste comportamento realizando reflinks de arquivos entre diferentes volumes montados.

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.

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

Dockerfile
FROM node:20-slim

# corepack é uma feature experimental no Node.js v20 que permite
# instalar e gerenciar versões do pnpm, npm e yarn
RUN corepack enable

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

# Pode ser necessário copiar mais arquivos além do package.json em seu código
COPY package.json /app/package.json

WORKDIR /app
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"