Skip to content

Docker data mounting patterns

Docker data mounting patterns refer to the strategies used to persist and share data between the host machine and containers.^[400-devops__09-Scripting-Language__python__introduction__part-4.http__README.md]

Development vs. Production

In a development environment, it is common to mount the entire project directory using a bind mount. This allows the code executing inside the container to reflect local changes immediately.^[400-devops__09-Scripting-Language__python__introduction__part-4.http__README.md]

In production or runtime scenarios, the container typically copies source code into its internal filesystem (e.g., /app) during the build process, rather than relying on a host mount for the application logic.^[400-devops__09-Scripting-Language__python__introduction__part-4.http__README.md]

Directory Separation Pattern

A key pattern for data mounting is separating application code from data files (such as json data stores, configurations, or secrets).^[400-devops__09-Scripting-Language__python__introduction__part-4.http__README.md]

Mounting a file or directory to a path that overlaps with application code can lead to data loss; if a host directory is mounted to /app, the application files located at /app (like app.py) may be hidden or overwritten by the mount.^[400-devops__09-Scripting-Language__python__introduction__part-4.http__README.md]

To prevent this, data should be mounted to a dedicated, separate directory (e.g., /data) distinct from the application's working directory.^[400-devops__09-Scripting-Language__python__introduction__part-4.http__README.md]

  • [[Bind mounts]]
  • [[Docker Volumes]]
  • [[Containerization]]

Sources

^[400-devops__09-Scripting-Language__python__introduction__part-4.http__README.md]