openshift:装载目录未填充来自容器的初始数据

问题描述 投票:2回答:1

我的带有pv,pvc和部署配置的openshift模板如下:

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

openshift openshift-origin openshift-3 openshift-enterprise okd
1个回答
0
投票

[构建docker映像时,将执行ADD命令并将数据复制到/usr/share/nginx文件夹。此时,该映像没有任何您打算将其用作NFS挂载点的信息。您无法通过dockerfile中的ADD命令将数据从静态文件夹复制到卷。

您可以在本地文件夹的容器中获得静态数据。

© www.soinside.com 2019 - 2024. All rights reserved.