openshift: каталог монтирования не заполняется исходными данными из контейнера

Мой шаблон openshift с pv, pvc и конфигурацией развертывания выглядит следующим образом:

kind: Template
apiVersion: v1
metadata:
  name: okd-static-server.
labels:
  template: okd-static-server

objects:
- apiVersion: v1
  kind: PersistentVolume
  metadata:
    name: okd-static-volume
  spec:
    storageClassName: manual
    capacity:
      storage: 1Gi
    persistentVolumeReclaimPolicy: Retain
    accessModes:
    - ReadWriteMany
    nfs:
      path: /mnt/k8smount/static
      server: <nfs_server_ip>

- apiVersion: v1
  kind: PersistentVolumeClaim
  metadata:
    name: okd-static-volume
    creationTimestamp: null
  spec:
    storageClassName: manual
    accessModes:
    - ReadWriteMany
    resources:
      requests:
        storage: 1Gi
    volumeName: okd-static-volume


- apiVersion: v1
  kind: DeploymentConfig
  metadata:
    creationTimestamp: null
    generation: 2
    labels:
      app: okd-static-server
    name: okd-static-server
  spec:
    replicas: 1
    selector:
      app: okd-static-server
      deploymentconfig: okd-static-server
    strategy:
      type: Rolling
    template:
      metadata:
        creationTimestamp: null
        labels:
          app: okd-static-server
          deploymentconfig: okd-static-server
      spec:
        containers:
        - image: okd-static-server:dev1.0.0
          imagePullPolicy: Always
          name: okd-static-server
          resources: {}
          volumeMounts:
          - mountPath: /usr/share/nginx
            name: okd-static
        restartPolicy: Always

        volumes:
        - name: okd-static
          persistentVolumeClaim:
            claimName: okd-static-volume-claim

Образ okd-static-server:dev1.0.0, который используется выше в конфигурации развертывания, создается с использованием следующего файла dockerfile.

FROM nginx:1.16-alpine

RUN mkdir -p /var/run/nginx /var/log/nginx /var/cache/nginx && \
    chown -R nginx:0 /var/run/nginx /var/log/nginx /var/cache/nginx && \
    chmod -R g=u /var/run/nginx /var/log/nginx /var/cache/nginx

ADD static/ /usr/share/nginx

COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf

ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

USER nginx:nginx
EXPOSE 8000

CMD ["nginx","-g","daemon off;"]

Как упоминалось в приведенном выше файле dockerfile, во время сборки образа docker статическое содержимое копируется в папку /usr/share/nginx образа. Папка образа: /usr/share/nginx монтируется в каталог монтирования nfs /mnt/k8smount/static, который можно увидеть из приведенного выше шаблона openshift.

Первоначально каталог монтирования nfs будет пустым. Проблема, с которой я столкнулся, заключается в том, что после развертывания встроенного образа с использованием вышеуказанного шаблона openshift каталог монтирования nfs не имеет ожидаемого статического содержимого. Вместо этого он пуст.

Примечание. При добавлении содержимого в каталог монтирования nfs вручную содержимое будет помещено в папку контейнера: /usr/share/nginx.

Openshift/okd версия: 3.11


person Community    schedule 27.04.2020    source источник


Ответы (1)


Когда вы создаете образ докера, выполняется команда ADD, и данные копируются в папку /usr/share/nginx. На данный момент в образе нет никакой информации о том, что вы собираетесь использовать его в качестве точки подключения к NFS. Вы не можете копировать данные из статической папки на том с помощью команды ADD в файле dockerfile.

Статические данные могут быть доступны в вашем контейнере в локальной папке.

person Nitin R    schedule 28.04.2020