我的带有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
[构建docker映像时,将执行ADD命令并将数据复制到/usr/share/nginx
文件夹。此时,该映像没有任何您打算将其用作NFS挂载点的信息。您无法通过dockerfile中的ADD
命令将数据从静态文件夹复制到卷。
您可以在本地文件夹的容器中获得静态数据。