我有以下情况。我在 OpenShift 中创建了一个构建:
oc new-build --strategy docker --binary --docker-image centos:centos7 --name myapp
而且在当地没有什么花哨的。我有一个 .war 文件和 Dockerfile:
FROM registry.access.redhat.com/jboss-webserver-3/webserver31-tomcat7-openshift
COPY pdf-maker##1.2.war /opt/webserver/webapps/
COPY pdfmaker1.0.properties /opt/webserver/conf/
COPY fop.xconf /opt/webserver/_fop/conf/fop.xconf
COPY logo.gif /opt/webserver/_fop/img/
COPY PDF_Transformation.xslt /opt/webserver/_fop/transformation/
RUN mkdir -p /opt/webserver/fop
WORKDIR /opt/webserver
EXPOSE 8080
CMD ["/opt/webserver/bin/catalina.sh", "run"]
我像这样运行构建:
oc start-build myapp --from-dir . --follow
到目前为止一切顺利......但应用程序从未在 OpenShift 中启动。它说:“错误:无法启动容器“myapp”:来自守护进程的错误响应:oci 运行时错误:container_linux.go:235:启动容器进程导致“exec:\”/opt/webserver/bin/catalina.sh\ “:stat /opt/webserver/bin/catalina.sh:没有这样的文件或目录”我试图跳过CMD行但没有成功。我100%路径是正确的。
我尝试从本地 Dockerfile 构建 Docker 映像并启动它。在本地按预期工作,但在 OpenShift 中 - 不起作用。我做错了什么,但我不知道是什么。
如果有人指出我的问题,我将不胜感激。
解决了
原来我依赖的是罪魁祸首centos。解决方案是使用这个:
oc new-build --strategy docker --binary --docker-image registry.access.redhat.com/jboss-webserver-3/webserver31-tomcat7-openshift --name sinergia-pdf-maker