Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将源文件复制到php容器时docker生成错误_Php_Docker_Docker Compose_Dockerfile - Fatal编程技术网

将源文件复制到php容器时docker生成错误

将源文件复制到php容器时docker生成错误,php,docker,docker-compose,dockerfile,Php,Docker,Docker Compose,Dockerfile,我正试图在docker中设置我的symfony项目,我正在努力构建php容器。 我已将所有源代码放入\var\www\app\ 以下是我的docker-compose.yml的摘录: php: build: context: . dockerfile: docker/php/Dockerfile volumes: - '/var/www/app:/var/www' restart: on-failure env_file:

我正试图在docker中设置我的symfony项目,我正在努力构建php容器。 我已将所有源代码放入
\var\www\app\
以下是我的docker-compose.yml的摘录:

  php:
    build:
      context: .
      dockerfile: docker/php/Dockerfile
    volumes:
      - '/var/www/app:/var/www'
    restart: on-failure
    env_file:
      - .env
    user: 1000:1000

  nginx:
    image: nginx:1.19.0-alpine
    restart: on-failure
    volumes:
      - '/var/www/app:/var/www'
      - './docker/nginx/app.conf:/etc/nginx/conf.d/app.conf:ro'
    ports:
      - '80:80'
    depends_on:
      - php
以下是Dockerfile:

FROM composer:2.0 as composer

FROM php:7.4-fpm

RUN docker-php-ext-install pdo_mysql

RUN pecl install apcu

RUN apt-get update && \
apt-get install -y \
libzip-dev

RUN docker-php-ext-install zip
RUN docker-php-ext-enable apcu

WORKDIR /var/www

COPY --chown=1000:1000 var/www/app /var/www

RUN PATH=$PATH:/usr/src/app/vendor/bin:bin

RUN composer install --no-scripts --prefer-dist \
  && rm -rf "$(composer config cache-dir)" "$(composer config data-dir)"
下面是我在尝试构建php容器时遇到的错误:

Step 9/11 : COPY --chown=1000:1000 var/www/app /var/www
ERROR: Service 'php' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder883740312/var/www/app: no such file or directory
我想,问题是它试图获取docker build文件夹中的文件,而不是
/var/www/app
。我认为这是因为上下文的关系,我试图改变它,但是它再也找不到我的Dockerfile了。 我不知道如何解决这个问题,但我觉得这是一个非常简单的问题…但我现在很迷茫


谢谢

您尝试在生成时复制文件夹,然后在运行时使用docker compose中的卷替换该文件夹。也许不需要音量

关于此错误,docker希望您的
var
文件夹与docker-compose.yml处于同一级别。如果情况并非如此,并且您的
var
文件夹位于
docker/php/
中,那么您必须在docker-compose.yml中将其设置为上下文

  php:
    build:
      context: docker/php
      dockerfile: Dockerfile

如果Dockerfile在上下文中,您甚至不需要在docker compose.yml中显式声明它,因为Dockerfile在上下文中,所以您的更改没有解决错误。问题不是
/var
不在上下文中。关于卷,我需要公开我的源代码,并且能够在编辑器中修改,并立即在ContainerId中得到报告。您是否尝试过我的更改?仅供参考:Dockerfile不在上下文中。docker/php/Dockerfile的路径为。这是一个微妙但基本的区别。是的,我有,但我仍然得到完全相同的消息,如果您试图从主机路径/var/www/html复制某些内容,那么这将永远不会起作用。正如你正确地说的那样,这超出了上下文。如果这是您正在尝试做的,那么问题是为什么您的源文件位于该位置?理想情况下,源文件和Dockerfile应该放在一起。嗯,它们应该放在一起。源代码位于
/var/www/app
中,docker文件位于
/var/www/app/docker/php/
中。也就是说,你的评论让我想到用
/
取代
/var/www/app
。我还不知道它是否真的有效,因为我在后面的步骤中遇到了另一个错误,但至少副本不再崩溃。感谢您的道义支持和提示!