What I want is that mount a hostpath pv to my pod directory for example /usr/share/nginx/html/ and my files at this directory be remain.
I have a nginx image that i have index.html file in it's /usr/share/nginx/html/ directory. And when i want to orchestrate it with Kubernetes and make a pod and use a PV for make it persistent, it mount the hostpath to container /usr/share/nginx/html/ directory and after that my index.html will be gone . these are my manifests
Dockerfile :
FROM nginx
WORKDIR /usr/share/nginx/html
COPY . /usr/share/nginx/html
EXPOSE 80
VOLUME /usr/share/nginx/htmlAnd in my . directory I have index.html
pod.yaml :
kind: Pod
apiVersion: v1
metadata:
labels:
app: nginx
name: task-pv-pod23
spec:
volumes:
- name: task-pv-storage2
persistentVolumeClaim:
claimName: task-pv-claim2
containers:
- name: task-pv-container
image: meysambbb/nginx:2
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- name: task-pv-storage2
mountPath: /usr/share/nginx/html/pv.yaml:
kind: PersistentVolume
apiVersion: v1
metadata:
name: task-pv-volume2
labels:
type: local
spec:
capacity:
storage: 10Gi
accessModes:
- ReadOnlyMany
hostPath:
path: "/mnt/2/data/"pvc.yaml :
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: task-pv-claim2
spec:
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 3GiWhen I run my pod without VolumeMount and when i run curl <POD_IP> it show my index.html contents but when I use pv and VolumeMount it show 403 error Is it possible to mount hostpath and have container files in same directory?
Is this data static (you build it into the image), or does it change (you want a volume to persist it)? What behavior do you want when this content changes?
The combination of options you're trying to specify here doesn't really make sense. Kubernetes doesn't do the thing Docker does where if you mount an empty volume into a container it's filled with matching content from the image. Even so, if you make a change and rebuild the image, neither plain Docker nor Kubernetes will modify the volume; it will still have the old content.
My intuition for a tree of HTML files and related assets is that it's probably more "like data" than "like code", and so I would use a plain nginx image, copy the tree into the directory you're mounting as a hostpath, and proceed that way. When this tree changes, you'd make the changes in the hostpath directory.