openshift: каталог монтирования не заполняется начальными данными из контейнера - PullRequest
2 голосов
/ 27 апреля 2020

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

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 содержимое stati c копируется в папку /usr/share/nginx изображения. Папка образа: /usr/share/nginx монтируется в каталог монтирования nfs /mnt/k8smount/static, что можно увидеть из приведенного выше шаблона openshift.

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

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

Версия Openshift / okd: 3.11

1 Ответ

0 голосов
/ 28 апреля 2020

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

Вы можете хранить данные stati c в вашем контейнере в локальной папке.

...