Dockerfile COPY 命令在覆盖另一个文件时将空文件放入其容器中



将文件从主机复制到目标路径中已存在文件的容器时,复制的文件为空。

我尝试将相同的文件复制到具有不同名称的路径,这工作正常。

我的 dockerfile 中发生此问题的两行是:

COPY conf/policy.xml /etc/ImageMagick-6/
COPY conf/000-default.conf /etc/apache2/sites-available/

完整的码头文件:

FROM php:7.3-apache
RUN docker-php-ext-install pdo_mysql && docker-php-ext-enable pdo_mysql
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN apt-get update && apt-get install -y 
  git libmagick++-dev 
  --no-install-recommends && 
  git clone https://github.com/mkoppanen/imagick.git && 
  cd imagick && git checkout master && phpize && ./configure && 
  make && make install && 
  docker-php-ext-enable imagick && 
  cd ../ && rm -rf imagick && 
  apt-get install -y ghostscript && rm -r /var/lib/apt/lists/*
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
COPY conf/php.ini /etc/php/7.3/fpm/conf.d/40-custom.ini
COPY conf/policy.xml /etc/ImageMagick-6/
COPY www/ /var/www/html/
COPY conf/000-default.conf /etc/apache2/sites-available/
COPY scripts/generate-ssl.sh /generate-ssl.sh
RUN chmod +x /generate-ssl.sh
RUN /bin/bash /generate-ssl.sh
EXPOSE 80 443

这是预期的行为吗?

来自 Docker 文档 - 文档副本:

COPY src dest :如果 src 是任何类型的文件,则将其与其元数据一起单独复制。在这种情况下,如果以尾部斜杠/结尾,它将被视为一个目录,其内容将写入/base((。

对于您的情况,请尝试指定目标文件:

COPY conf/policy.xml /etc/ImageMagick-6/policy.xml
COPY conf/000-default.conf /etc/apache2/sites-available/000-default.conf

否则我看不出你的码头文件有什么问题

最新更新