So I am running a local kubernetes cluster on my macOS using Docker for Desktop.
I am setting up a Kubernetes cluster that I'd like to test locally, but I have some issues copying other my local folder to the source image.
My Dockerfile is pretty darn simple:
FROM wordpress:latest WORKDIR /var/www/html # Copy wp-content COPY ./wp-content/ ./wp-content/ # I don't find the /wp-content/ in my container/image/pod once deployed, but I do find it if I run just the docker image In the directory where my Dockerfile belongs, I have a wp-content folder, that I would expect to see on the container once it's been built.
When I run docker build -t johndoe/wordpress:<someUniqueVersion> and then docker push johndoe/wordpress:<versionTag> I see the repository, I also see that it's quite bigger than the official WordPress image (hence some files must've been copied over).
However, when update my Kubernetes deployment yaml config file to use the specific version I just pushed, and then run kubectl apply wordpress-deployment.yaml, I see the POD restarting as well as using the correct Docker Image commit (kubectl get pods <podname> -o jsonpath="{..imageID}"), BUT the files are not present if I do kubectl exec <podname> -it sh and look in the files. All the other WordPress files (from the native WordPress image) is there, but the files I told Docker to specifically copy over is not present.
I have also tried to do a find / -name "myfile" on the whole file system, in case the file was copied over somewhere else, but it's simply not on the image.
The docker build finishes without issues:
[+] Building 27.7s (9/9) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 380B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/wordpress:latest 0.0s => [1/3] FROM docker.io/library/wordpress:latest 0.0s => [internal] load build context 8.9s => => transferring context: 190.57MB 8.8s => CACHED [2/3] WORKDIR /var/www/html 0.0s => [3/3] COPY ./wp-content ./ 8.7s => exporting to image 9.3s => => exporting layers 9.3s => => writing image sha256:7b567cfc8609661edfcc6495df25ba448c9b85957av3692184beca3e6h9ce8c7 0.0s => => naming to docker.io/johndone/wordpress:v1.7 Things I have also tried:
- Deleting the PVC/PV volume claim, in case that could be an issue
- Tried different variations of the COPY (e.g
COPY ./wp-content/ ./wp-content/,COPY ./wp-content/ /var/www/html/wp-content) - Tried copying over a single test file like so:
COPY ./test /var/www/htmlhowever, that does not appear either. - Ensured directory is not present in
.dockerignore. I even tried renaming the file completely to ensure it wouldn't be the issue.
Update
My wordpress-deployment.yaml file:
apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-deployment spec: replicas: 2 selector: matchLabels: component: wordpress template: metadata: labels: component: wordpress spec: volumes: - name: wordpress-storage persistentVolumeClaim: claimName: wordpress-persistent-volume-claim containers: - name: wordpress image: myusername/wordpress:v1.7.2 ports: - containerPort: 8000 env: - name: WORDPRESS_DB_HOST value: db-cluster-ip-service:3306 - name: WORDPRESS_DB_USER value: wordpress - name: WORDPRESS_DB_NAME value: thedatabase - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: dbpassword key: MYSQL_PASSWORD - name: WORDPRESS_DEBUG value: "1" - name: WORDPRESS_TABLE_PREFIX value: wp_ volumeMounts: - name: wordpress-storage mountPath: /var/www/html subPath: wordpress imagePullSecrets: - name: regcred My WordPress persistent volume claim file:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wordpress-persistent-volume-claim spec: accessModes: - ReadWriteMany resources: requests: storage: 6Gi