Achei tua pergunta um pouco ampla, então posso ter interpretado mal, mas acho que entendi tua dúvida.
Quando tu cria um container do docker, basicamente é criado uma pasta que é tratada como o / do Linux, o caminho onde se encontra todos os arquivos do sistema. O Docker vê essa pasta como a raiz do sistema e começa a subir o container à partir de lá, com permissões limitadas para apenas poder mexer naquela pasta.
Quando tu copia teus arquivos pra dentro do container, eles são copiados pra essa pasta, e quando o container é derrubado e limpo (docker compose down
e docker system prune
, por exemplo) os arquivos dentro dessa pasta são excluídos.
Para que isso não aconteça, tu precisa criar um volume e mapear ele para alguma pasta externa ao container.
Por exemplo:
my-app/
├─ backup/
│ ├─ .gitkeep
├─ node_modules/
├─ src/
│ ├─ index.js
├─ docker-compose.yml
nesse caso você mapeia a pasta do container para a pasta backup