<p>I need to download files into a specific folder of a container on a pod, at startup. The image for this container already has an existing folder with other files in it. (example is adding plugin jars to an application) </p>

<p>I've attempted the below example, however k8s volumeMounts overwrites the folder on container. </p>

<p>In the example below '/existing-folder-on-my-app-image/' is a folder on the my-app image which already contains files. When using the below I only get the downloaded plugin.jar in folder '/existing-folder-on-my-app-image/' and existing files are removed.</p>

<p>I want to add other files to this folder, but still keep those files which where there to start with. </p>

<p>How can I stop k8s from overwriting '/existing-folder-on-my-app-image/' to only have the files from initContainer? </p>

<pre><code>apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  initContainers:
  - name: config-data
    image: joosthofman/wget:1.0
    command: ["sh","-c","wget https://url.to.plugins/plugin.jar --no-check-certificate"]
    volumeMounts:
    - name: config-data
      mountPath: /config
  containers:
  - name: my-app
    image: my-app:latest
    volumeMounts:
    - name: config-data
      mountPath: /existing-folder-on-my-app-image/     
  volumes:
  - name: config-data
    emptyDir: {}
</code></pre>

Melissa
<p>volume mounts always shadow the directory they are mounted to. a volume mount is the only way for an init container to manage files that are also visible to another container in the pod. if you want to copy files into a directory that already contains files in the main container image, you'll need to perform that copy as part of the container startup</p>
