我尝试使用多阶段构建在 openshift 上构建 docker 镜像。
我可以在 Linux 和 Windows 框中使用以下 Dockerfile 构建映像,但是当我尝试在 openshift 上构建它时出错。
我的 openshift 版本
OpenShift Master: v3.11.0+5407964-426
Kubernetes Master:v1.11.0+d4cacc0
OpenShift Web Console:v3.11.0+ea42280
Dockerfile 的一部分
FROM debian:buster as debian-odbc-driver
.
.
FROM continuumio/miniconda3 as builder
.
.
RUN conda config --set ssl_verify /etc/ca-bundle.trust.crt && \
conda create --name myenv python=3.7.3 --no-default-packages && \
conda create -n dask --clone myenv --offline && \
conda env create -n "env" python=3.7.3 -f environment.yml &&\
conda create -n dataduct --clone env --offline
FROM php:7-apache
.
.
COPY --from=debian-odbc-driver /tmp/dremio-odbc_1.5.0.1001-2_amd64.deb /tmp
.
.
COPY --from=builder /opt/conda/ /home/root/test/
#The following command also not work....
#COPY --from=builder --chown=root:root /opt/conda/ /home/root/test/
错误日志
error: build error: API error (404): {"message":"Error processing tar file(exit status 1): link /conda/envs/dask/bin/clear /home/root/test/envs/dataduct/bin/clear: no such file or directory"}
相信多阶段构建可以在openshift上工作,我们可以成功地将第一阶段的镜像文件复制到php镜像中。
请就这个问题提出一些建议。
谢谢!
答案 0 :(得分:0)
您没有提供完整的 Containerfile,因此我无法重现您的错误,但请查看以下行:
复制 --from=builder /opt/conda/ /home/root/test/
您似乎正在将文件从一个容器复制到尚未退出的目标目录 (/home/root/test/)。
我们可以假设 /home/root 存在,所以尝试:/home/root/test - 另外,因为另一个 COPY 可以复制到 /tmp 中,我会将第二个 COPY 复制到 /tmp 中以隔离它是否有问题源容器或目标。