Команда Dockerfile COPY помещает пустой файл в свой контейнер при перезаписи другого файла. - PullRequest
1 голос
/ 01 июня 2019

При копировании файлов с хост-компьютера в контейнер, где файл уже существует по пути назначения, скопированный файл будет пустым.

Я попытался скопировать те же файлы в путь с другим именем, и это прекрасно работает.

Две строки из моего dockerfile, на которых возникает эта проблема:

COPY conf/policy.xml /etc/ImageMagick-6/

COPY conf/000-default.conf /etc/apache2/sites-available/

Полный Dockerfile:

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

Это предполагаемое поведение?

1 Ответ

2 голосов
/ 01 июня 2019

Из Документация Docker - Docerfile Copy :

COPY src dest: Если src - это файл любого типа, он копируется отдельно вместе с его метаданными.В этом случае, если заканчивается косой чертой /, он будет считаться каталогом, а содержимое будет записано в /base().

В вашем случае попробуйте указать файл dest:

COPY conf/policy.xml /etc/ImageMagick-6/policy.xml

COPY conf/000-default.conf /etc/apache2/sites-available/000-default.conf

В противном случае я не вижу ничего плохого в вашем файле dockerfile

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...