Trabalhando com Podman
Compartilhando arquivos entre um Container e o sistema de arquivos Btrfs hospedeiro
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:
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"