docker - docker-compose 文件中的 COPY 失败
问题描述
我正在尝试在 PHP 中安装 xdebug。在构建过程中,当它到达 Dockerfile 中的 COPY 时,我收到以下错误消息。
ERROR: Service 'php' failed to build : COPY failed: file not found in build context or excluded by .dockerignore: stat docker-php-ext-xdebug.ini: file does not exist
我已确保该文件确实存在并且目录中没有 .dockerignore 文件。除非有另一个 .dockerignore 文件是全局文件。我在 Mac 上
这是我的 docker-compose.yml 文件
version: "3.7"
services:
nginx:
image: nginx:1.19
ports:
- 8080:80
volumes:
- ./src:/var/www/php:ro
- ./.docker/nginx/conf.d:/etc/nginx/conf.d:ro
depends_on:
- php
# PHP Service
php:
build: ./.docker/php
working_dir: /var/www/php
volumes:
- ./src:/var/www/php
depends_on:
- db
# MySQL Service
db:
image: mariadb:10.5-focal
restart: always
volumes:
- ./mysqldata:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravelapp
ports:
- 3306:3306
# PhpMyAdmin Service
phpmyadmin:
image: phpmyadmin/phpmyadmin:5
ports:
- 8081:80
environment:
PMA_HOST: db
depends_on:
- db
和我的 Dockerfile 用于 php 服务
FROM php:7.4.7-fpm
ENV PHP_IDE_CONFIG="serverName=localhost"
# Install developer dependencies
RUN apt-get update -yqq && apt-get install -y git libsqlite3-dev nano libxml2-dev libicu-dev libfreetype6-dev libmcrypt-dev libjpeg62-turbo-dev libpng-dev libcurl4-gnutls-dev libbz2-dev libzip-dev libssl-dev -yqq
# Install mcrypt for development
RUN pecl install mcrypt-1.0.4 \
&& docker-php-ext-enable mcrypt
# Install xdebug for development
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
#Install other php extensions
RUN docker-php-ext-install sockets \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install json \
&& docker-php-ext-install xml \
&& docker-php-ext-install zip \
&& docker-php-ext-install bz2
RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/
RUN docker-php-ext-install gd
# Copy the configuration file into xdebug, if running phpinfo() you see the loaded file is not this one, change the path accordingly.
COPY docker-php-ext-xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
# install composer
RUN curl --silent --show-error https://getcomposer.org/installer | php
WORKDIR /var/www/php
我不知道为什么这会失败。先感谢您。
解决方案
您的构建上下文是./.docker/php
,所以无论您在哪里运行docker-compose build
,都需要一个名为.docker/php
-- 的子目录存在吗?如果您打算在docker-compose
其他地方寻找.docker/php
,则需要删除前导./
并指定绝对路径。
换句话说,${PWD}/.docker/php/docker-php-ext-xdebug.ini
必须存在,或者必须替换${PWD}
为所需的父目录才能查看
推荐阅读
- android - 在android中将数据从一个应用程序发送到另一个应用程序的加密
- r - 在线图 r 中绘制分组变量
- excel - 使用 VBA 将单词与数字分开
- java - 如何从左到上更改 Android TV 应用中标题的位置?
- android - 如何使用向量打印文件中的单词列表,每次用户查询 [C++] 一次?
- powershell - ms access.exe挂起powershell时发送电子邮件
- sql - SQL 嵌套 IIF 函数
- cassandra - cassandra-reaper:维修一再推迟和卡住
- android - AdMob 永远不会在某些设备上加载
- google-maps - 谷歌静态地图不显示超过 5 个图钉