docker - 为什么“添加”后本地目录为空。在 dockerfile 上?
问题描述
在我的主目录中:
- docker-compose.yaml
- php.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"
php.Dockerfile 内容
FROM php:7.4.3-apache
WORKDIR /var/www/htmlhtml
ADD . /var/www/htmlhtml/
ADD 指令应该将文件 'foo.txt' 放在 htmlhtml 目录中。
并且 htmlhtml 目录应该与 htmlhtml 容器的目录相连?
但事实并非如此。
为什么 ?
谢谢
解决方案
确实如此,但您在可能为空的目录顶部安装了一个卷。
- 首先您构建容器,它将
/var/www/htmlhtml
通过ADD
指令将文件复制到 - 之后,通过启动容器
docker-compose
并安装卷,在这种情况下./htmlhtml
安装到/var/www/htmlhtml
,作为复制文件的覆盖
解决方案是决定你想要什么。你可以
- 通过已安装的卷提供服务的文件并仅复制静态文件,或
- 将所有文件复制到容器并将卷用于您想要的任何内容
推荐阅读
- com - 如何创建进程外 RTD 服务器的多个实例?
- android - 警告:尝试生成可用性为空的警卫:已过时 = 21 错误
- sql - 预订表查询
- joomla - Joomla configuration.php 在权限为 0644 时不可写,但在 0664 时可写
- javascript - Angular - 找不到名称 CookieService
- sql - 从表 A 中选择所有行,并在帐号上连接表 B,但排除 tableB.foo == bar 的行。我可以在一次查询中获取此数据集吗?
- python-3.x - python tkinter,滚动条缺少旋钮(拇指)
- php - 如何在最后一个数组值之后加入字符串?
- javascript - 在不破坏我的代码的情况下删除一个函数
- python - 无法从内存中清除大量数据