docker-compose文件将删除dockerfile在容器目录中提取的文件

我想从dockerfile构builddrupal,并在容器目录 – / var / www / html / sites / all / modules中使用该dockerfile在drupal中安装模块。 但是当我通过docker-compose编译构builddockerfile时,它会正确提取。只要执行docker-compose,文件就消失了,但卷已经映射。 请看看docker-compose和dockerfile

DockerFile

FROM drupal:7 RUN rm /bin/sh && ln -s /bin/bash /bin/sh ENV DRUPAL_VERSION 7.36 ENV DRUPAL_MD5 98e1f62c11a5dc5f9481935eefc814c5 ADD . /var/www/html/sites/all/modules WORKDIR /var/www/html RUN chown -R www-data:www-data sites WORKDIR /var/www/html/sites/all/modules # Install drupal-chat ADD "http://ftp.drupal.org/files/projects/{drupal-module}.gz {drupal-module}.tar.gz" RUN tar xzvf {drupal-module} \ && rm {drupal-module} \ 

docker – 撰写文件

 # PHP Web Server version: '2' drupal_box: build: . ports: - "3500:80" external_links: - docker_mysqldb_1 volumes: - ~/Desktop/mydockerbuild/drupal/modules:/var/www/html/sites/all/modules - ~/Desktop/mydockerbuild:/var/log/apache2 networks: - default - docker_default environment: MYSQL_USER: root MYSQL_PASSWORD: root MYSQL_DATABASE: drupal restart: always #entrypoint: ./Dockerfile networks: docker_default: external: true 

执行:

 sudo docker-compose build sudo docker-compose up 

在执行上述两个命令 – 容器中的目录没有{drupal-module文件夹},但我看到它在控制台中的目录中成功解压缩(由于dockerfile中的tar命令中的xzvf)。 但是这有助于映射主机目录和容器目录,添加或删除的文件可以在虚拟和本地中看到。

但是一旦我删除了第一个映射卷(即〜/桌面…)的模块是在目录中提取,但映射没有完成。

我的主要目标是提取/ var / www / html / sites / all / modules中的{drupal-module}文件夹,并将相同的文件夹映射到主机目录。

请帮忙 !

所以是的。

答案是,您不能将容器文件夹的提取内容放入在docker-compose中的卷映射中指定的主机文件夹中。 即(./modules:/var/www/html/sites/all/modules)对于drupal docker是不可接受的。

我用命名卷来做到这一点。 例如 – modules:/ var / www / html / sites / all / modules这将在var / lib / docker / volumes中创build一个卷…(你可以通过“docker inspect”来获得地址)与您的容器中提取的数据相同。

注意 – 区别在于./ !!!