During development you want to edit code on your laptop and see the running container pick it up at once, without rebuilding the image. A bind mount maps a host folder straight into the container for exactly that. Use it for hot reload in development or to feed in a config file. For data Docker should own and keep, such as a database, use a named volume, and note that -v site:/data without a path is a volume, not your folder.