首页 > 解决方案 > 为什么“添加”后本地目录为空。在 dockerfile 上?

问题描述

在我的主目录中:

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 容器的目录相连?

但事实并非如此。

为什么 ?

谢谢

标签: dockerdocker-composedockerfile

解决方案


确实如此,但您在可能为空的目录顶部安装了一个卷。

  1. 首先您构建容器,它将/var/www/htmlhtml通过ADD指令将文件复制到
  2. 之后,通过启动容器docker-compose并安装卷,在这种情况下./htmlhtml安装到/var/www/htmlhtml,作为复制文件的覆盖

解决方案是决定你想要什么。你可以

  • 通过已安装的卷提供服务的文件并仅复制静态文件,或
  • 将所有文件复制到容器并将卷用于您想要的任何内容

推荐阅读