I struggled for some time getting postgres to run on docker/k8s with /var/lib/postgresql/data mounted on an nfs-server.

I reguallary ended up with

chown: changing ownership of '/var/lib/postgresql/data/base/**/**': Operation not permitted.

I'm no expert in nfs and its export-options but to make the story short I stumbled over a stackoverflow-entry that suggested to change the postgres-docker-image's uid/gid to the one that has write access of the NFS-folder.

Ok,...you need to create a new docker image for this, but finally. Thx to 'Eddie Parker' my Dockerfile ended up like this. Where my user has the uid 1000 and is in group 100:


FROM postgres:11.2
ENV TZ=America/Los_Angeles

# Make us the same gid/id as the nfs mount.
RUN sed -i 's/:999:/:1000:/g' /etc/group
RUN sed -i 's/:999:999:/:1000:100:/g' /etc/passwd

CMD [ "postgres", "-c", "max_connections=10000"]

Once you have this create a new image:

sudo docker build -t nfs/postgres:11.2 .

PS: I guess it would be fine to create a user with UID:999 gid:999 on the NFS-System which creates the data-directory.