Para alterar um bind mount do Compose com segurança no macOS, primeiro identifique a pasta existente no host e o caminho no contêiner que ela atende. Copie os arquivos para a nova pasta do Mac antes de editar o Compose, depois verifique o ponto de montagem resolvido e recrie o serviço afetado. Um bind mount aponta para um caminho do host; alterar esse caminho não move nem exclui os arquivos originais. A documentação de bind mount do Docker também explica que uma montagem pode ocultar arquivos já presentes no seu destino dentro do contêiner.
Saiba quais arquivos a montagem controla
Um bind mount do Compose conecta um caminho no seu Mac a um caminho dentro de um contêiner. Por exemplo, ./data:/var/lib/example disponibiliza o diretório data ao lado do arquivo do Compose dentro do contêiner em /var/lib/example. Gravações feitas pelo contêiner nessa montagem podem alterar arquivos do Mac, pois os bind mounts são de leitura e escrita por padrão. A pasta do Mac é o dado que você precisa preservar; o destino no contêiner é onde a aplicação espera encontrá-lo.
Isso é diferente de um volume nomeado, como db-data:/var/lib/example. Um volume nomeado é armazenado e gerenciado pelo Docker, enquanto um bind mount usa um diretório do host. Mudar de um para o outro é uma migração de armazenamento, não apenas uma edição de caminho. Não presuma que recriar um contêiner copiará arquivos entre eles. A documentação de armazenamento do Docker descreve essa distinção.
Copie os arquivos existentes para a nova pasta do Mac
Antes de alterar o arquivo do Compose, pare o serviço se houver a possibilidade de ele gravar dados. No Terminal, execute docker compose stop app, substituindo app pelo nome do serviço no Compose. Isso reduz a chance de as pastas antiga e nova divergirem enquanto você copia. Verifique o arquivo do Compose e eventuais arquivos de sobreposição (overrides) para confirmar a origem e o destino atuais exatos; evite adivinhar apenas pelo diretório visível de um contêiner.
Por exemplo, se a origem atual for ~/Projects/Old App/data e a nova origem deva ser ~/Projects/New App/data, crie o destino e copie o conteúdo com o comando padrão rsync do macOS:
mkdir -p "$HOME/Projects/New App/data"
rsync -a "$HOME/Projects/Old App/data/" "$HOME/Projects/New App/data/"
As barras finais significam "copie o conteúdo deste diretório". As aspas protegem os espaços nesses caminhos de exemplo contra o shell padrão do macOS, o zsh. Esse comando mescla os arquivos no destino e não exclui arquivos que existam apenas no destino. Inspecione o destino antes de continuar. Se os dados forem importantes, mantenha também um backup independente; uma cópia não substitui um backup.
Atualize o bind mount e proteja-se contra erros de digitação
Prefira a sintaxe longa do Compose para uma montagem de diretório quando quiser que um caminho de origem inexistente impeça a inicialização em vez de se transformar silenciosamente em uma pasta vazia:
services:
app:
volumes:
- type: bind
source: ./data
target: /var/lib/example
bind:
create_host_path: false
Aqui, ./data é resolvido em relação ao diretório pai do arquivo do Compose para uma execução local do Compose. Altere-o para o caminho do Mac desejado (relativo ou absoluto), mas mantenha o target inalterado se a aplicação precisar continuar usando /var/lib/example. A sintaxe curta do Compose cria um diretório no host quando sua origem não existe; a sintaxe longa com create_host_path: false evita esse comportamento de contingência. Consulte a referência de serviços do Compose.
Se você escolher um caminho absoluto com espaços, coloque a string YAML entre aspas, por exemplo, source: "/Users/sam/Projects/New App/data". Substitua sam pelo nome real do diretório pessoal (home) da sua conta no Mac. Mantenha o caminho de origem no YAML como um caminho literal; as regras de escape do shell se aplicam a comandos do Terminal, não a valores do YAML.
Verifique o caminho resolvido e recrie o serviço
A partir do diretório que contém o arquivo do Compose, inspecione a configuração que o Compose usará:
docker compose config
Verifique se a origem do bind mount do serviço app é resolvida para a nova pasta e se o destino continua sendo /var/lib/example. Se você usa múltiplos arquivos Compose, lembre-se de que os caminhos são baseados no primeiro arquivo especificado; a referência da CLI do Compose documenta esse comportamento. Se a origem resolvida for inesperada, pare e corrija o arquivo antes de iniciar os contêineres.
Recrie o serviço para que o contêiner em execução receba a montagem alterada:
docker compose up -d --force-recreate app
docker compose ps app
O Compose documenta que o up recria os contêineres quando a configuração muda, e a opção --force-recreate torna isso explícito. Confirme se o serviço está em execução e, em seguida, verifique os arquivos ou dados esperados pela aplicação antes de remover ou renomear a pasta antiga. O diretório antigo permanece no seu Mac, a menos que você mesmo o exclua. Mantenha-o até confirmar que a nova origem está correta e que a aplicação está se comportando como esperado.
Se a montagem falhar no Docker Desktop para Mac
O Docker Desktop executa contêineres em uma máquina virtual Linux e faz a mediação do acesso aos arquivos do Mac. Seus diretórios compartilhados padrão incluem /Users, /Volumes, /private, /tmp e /var/folders; uma origem fora dos locais compartilhados disponíveis pode precisar ser adicionada em Settings > Resources > File sharing no Docker Desktop. A documentação de configurações do Docker Desktop descreve esse controle e observa que as permissões de arquivo ainda são relevantes.
Uma falha na montagem deve motivar uma verificação de caminho e de compartilhamento, não a exclusão da cópia antiga. Se o novo diretório estiver vazio, verifique o source resolvido, se a cópia posicionou os arquivos no nível de diretório correto e se o Docker Desktop consegue acessar esse local no Mac. Não use docker compose down -v como uma etapa de correção do bind mount: isso é desnecessário para alterar a origem de um bind mount e pode remover volumes nomeados usados pelo projeto.
A finalização segura é simples: verifique se a nova pasta do Mac contém os arquivos necessários, confirme se o Compose faz a resolução para essa pasta e para o destino esperado no contêiner e, por fim, teste o serviço recriado antes de descartar a cópia original.
Fontes
Bind mounts — Docker Docs
Define services in Docker Compose — Docker Docs
docker compose — Docker Docs
Change your Docker Desktop settings — Docker Docs