为什么dockerfile上的“ADD.”之后本地目录为空?

为什么dockerfile上的“ADD.”之后本地目录为空?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,在我的主目录中: docker-compose.yaml Dockerfile foo.txt htmlhtml目录 Docker-compose.yaml内容 version: "3.7" services: web-server: build: dockerfile: php.Dockerfile context: . # restart: always volumes: - "./htmlh

在我的主目录中:

docker-compose.yaml Dockerfile foo.txt htmlhtml目录 Docker-compose.yaml内容

version: "3.7"
services:
  web-server:
    build:
      dockerfile: php.Dockerfile
      context: .
    #    restart: always
    volumes:
      - "./htmlhtml/:/var/www/htmlhtml/"
    ports:
      - "8080:80"
Dockerfile内容

FROM php:7.4.3-apache

WORKDIR /var/www/htmlhtml

ADD . /var/www/htmlhtml/
ADD指令应将文件“foo.txt”放在htmlhtml目录中

htmlhtml目录应该与htmlhtml容器的目录连接吗

但事实并非如此

为什么?


thx

确实如此,但您在目录顶部装载了一个卷,该目录可能是空的

首先构建容器,它将通过ADD指令将文件复制到/var/www/htmlhtml 之后,通过docker compose启动容器并装载卷,在本例中,/htmlhtml装载到/var/www/htmlhtml,作为复制文件的覆盖 解决办法是决定你想要什么。你也可以

通过装入的卷提供服务文件,并且仅复制静态文件,或者 将所有文件复制到容器中,并将该卷用于任何您想要的用途
换句话说,它复制文件然后销毁它们?如何复制文件,能够在dockerfile(即script.sh)中使用它们并在之后保留它们?不。它只是在该目录上挂载一个目录。里面的东西还在。删除docker-compose.yml中的volume指令,您将看到这些文件。或者,将文件添加到./htmlhtml,您将看到该文件显示在容器中。没有任何东西被破坏。