【发布时间】:2021-07-13 10:30:29
【问题描述】:
我正在构建一个多级 docker 映像,其中我们有一个基础映像,该基础映像将被扩展以构建实际的最终映像。但是我似乎无法将来自父图像的文件复制到子图像中。
基础图片
FROM debian:10.9-slim AS base
# PHP Version
ONBUILD ARG PHP_VERSION
ONBUILD ENV PHP_VERSION=${PHP_VERSION:-7.4}
# More stuff.
...
# Copy PHP settings into the image
COPY ./php/pool.d/*.conf /build-php/pool.d/
COPY ./php/conf.d/*.ini /build-php/conf.d/
# Onbuild copy the settings to the correct PHP version
ONBUILD COPY /build-php/pool.d/*.conf /etc/php/${PHP_VERSION}/fpm/pool.d/
ONBUILD COPY /build-php/conf.d/*.ini /etc/php/${PHP_VERSION}/fpm/conf.d/
ONBUILD COPY /build-php/conf.d/*.ini /etc/php/${PHP_VERSION}/cli/conf.d/
具体图片
ARG PHP_VERSION=8.0
FROM abcdef.amazonaws.com/php-base:v1.14.0 AS base
在构建次映像时出现以下错误
$ docker build -t php8.0:base .
...
=> ERROR [7/1] COPY /build-php/pool.d/*.conf /etc/php/8.0/fpm/pool.d/ 0.0s
------
> [7/1] COPY /build-php/pool.d/*.conf /etc/php/8.0/fpm/pool.d/:
------
lstat /var/lib/docker/tmp/buildkit-mount474178567/build-php/pool.d: no such file or directory
我检查了父图像,文件被很好地复制到/build-php。此外,在构建子映像(禁用 onbuild 副本)时,文件存在于/build-php。我不明白为什么 onbuild 副本找不到文件。
【问题讨论】:
标签: docker dockerfile docker-multi-stage-build