我的问题很奇怪,我的想法已经用完了。我有一个OpenShift部署,但不幸的是我没有RBAC访问权限,因此任何rsync和其他优点对我都不适合。总结一下……我创建了一个存储,该存储在路径为/ usr / local / tomcat / fop的2个应用程序之间共享,并且我有一个基于映像的构建。用于构建的映像以前是在我的计算机上本地构建为二进制构建的,在其Dockerfile中,我在其中添加了几个文件,例如:
COPY fop.xconf /usr/local/tomcat/fop/conf/fop.xconf
COPY ExperianPDF2016.gif /usr/local/tomcat/fop/img/
COPY PDF_Transformation.xslt /usr/local/tomcat/fop/transformation/
RUN [ -d /usr/local/tomcat/fop/xml ] || mkdir -p /usr/local/tomcat/fop/xml
RUN [ -d /usr/local/tomcat/fop/reports ] || mkdir -p /usr/local/tomcat/fop/reports
RUN [ -d /usr/local/tomcat/fop/output ] || mkdir -p /usr/local/tomcat/fop/output
因此,如果我在不添加存储的情况下部署映像,会发生什么情况-很好,所有文件都在这里,但是我没有读/写文件的权限,并且也不会与其他应用程序共享。但是,如果我映射存储并说我具有/ usr / local / tomcat / fop的安装路径,那么我就拥有该文件夹,并且该文件夹在应用程序之间共享,但是它是空的,映像中的任何内容都没有。
在我们的DEV环境中,我使用oc rsync在文件夹中添加了丢失的文件,但是在下一个环境中,我没有RBAC权限,也没有“终端”访问权限,也没有rsync。
任何解决此问题的方法将不胜感激。
[更新]
根据我的建议,我可以使用Init容器方法。这是我的部署配置:
spec:
containers:
- image: >-
docker-registry.default.svc:5000/ob-orc-dev/pdf-maker@sha256:a4eadb602e4afb5bf25cc17b916b848cecc06a05d1cd69000cd84feb70df63bd
imagePullPolicy: Always
name: bat-dancho
ports:
- containerPort: 8080
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /usr/local/tomcat/fop123
name: pdf-tst
subPath: xml
dnsPolicy: ClusterFirst
initContainers:
- command:
- /bin/sh
- '-c'
- cp -R ~/usr/local/tomcat/fop/* ~/usr/local/tomcat/fop123
image: >-
docker-registry.default.svc:5000/ob-orc-dev/pdf-maker@sha256:a4eadb602e4afb5bf25cc17b916b848cecc06a05d1cd69000cd84feb70df63bd
imagePullPolicy: Always
name: init-myservice
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /usr/local/tomcat/fop123
name: pdf-tst
subPath: xml