Docker Community Forums

Share and learn in the Docker community.

Cannot mount hostPath onto container pod -- permission denied

I have the following Kubernetes manifest:

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: pg-config
data:
  POSTGRES_USER: 'myDbUser'
  POSTGRES_DB: 'sandbox'
  POSTGRES_APP_NAME: 'myApp'
  POSTGRES_HOST_AUTH_METHOD: 'scram-sha-256'
  POSTGRES_INITDB_ARGS: '--auth-local=scram-sha-256'
  
---
apiVersion: v1
kind: Secret
metadata:
  name: pg-secret
data:
  POSTGRES_PASSWORD: somebase64encodedpassword=

---
apiVersion: v1
kind: Pod
metadata:
  name: pg-pod
  labels:
    type: postgres
spec:
  containers:
  - name: postgres
    image: postgres:12.3-alpine
    imagePullPolicy: IfNotPresent
    ports:
    - name: pg-port
      containerPort: 5432
    envFrom:
    - configMapRef:
        name: pg-config
    - secretRef:
        name: pg-secret
    volumeMounts:
    - name: pg-vol
      mountPath: /var/lib/postgresql/data
  volumes:
  - name: postgres-vol
    hostPath:
      path: /Users/<path-to-app>/application/database/data
  restartPolicy: Never

When I apply the manifest I get the following error:

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

initdb: error: could not access directory "/var/lib/postgresql/data": Permission denied

What is going on here that is causing the permission denied? I am trying to move a docker run command for this to a Kubernetes manifest running locally on minikube v1.11.0

I’ve been looking at this https://github.com/docker-library/docs/tree/master/postgres#arbitrary---user-notes for help but don’t know where to begin in regards to the manifest file.