Kubernetes (in Docker for Windows) Volume Configuration for Postgres Kubernetes (in Docker for Windows) Volume Configuration for Postgres kubernetes kubernetes

Kubernetes (in Docker for Windows) Volume Configuration for Postgres


I found a partial solution to this issue.

Interestingly, if I assign a linux-style path as my host-path (on Windows), then my pgdata-vol persists until Docker Desktop is restarted.

Instead of mounting to a real windows location

  volumes:  - name: "pgdata-vol"    hostPath:      path: /c/temp/vols/pgdata

I use a "linux" location as my Windows hostPath

  volumes:  - name: "pgdata-vol"    hostPath:      path: /tmp/vols/pgdata

Curiously, I cannot actually find this path from Windows. I presume this /tmp is local to my Docker Desktop instance.

This solution does not offer true persistence, but it has helped me to work around a roadblock that was impacting testing.


This is a known issue with Docker image on Windows. Right now it is not possible to correctly mount Windows directories as volumes. You may however try to workaround it by using a persistent Docker volume. For example:

  db:    image: postgres    environment:      - POSTGRES_USER=<user>      - POSTGRES_PASSWORD=<pass>      - POSTGRES_DB=<db_name>    ports:      - <ports>    volumes:      - pgdata:<path>    networks:    - <network>volumes:  pgdata:

More Information:

Please let me know if that helped.


Have you tried using WSL? My setup for windows is WSL + Ubuntu + Docker for windows and I can mount volumes normally.

I've followed that tutorial to configure all my environment:

https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly