为什么dockerfile上的“ADD.”之后本地目录为空?
在我的主目录中: docker-compose.yaml Dockerfile foo.txt htmlhtml目录 Docker-compose.yaml内容为什么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
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,您将看到该文件显示在容器中。没有任何东西被破坏。