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

时间:2017-03-10 08:01:25

标签: docker drupal docker-compose dockerfile

我想从dockerfile构建drupal并使用容器目录中的dockerfile在/ dr / www / html / sites / all / modules中在drupal中安装模块。 但是当我通过docker-compose build构建dockerfile时,它正确地提取.. 一旦我执行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-compose file

# 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)。 但是这有助于我映射主机目录和容器目录,并且可以在虚拟和本地看到添加或删除的文件。

但是只要删除卷中的第一个映射(即〜/ Desktop ...),模块就会在目录中解压缩,但映射不会完成。

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

请帮忙!

1 个答案:

答案 0 :(得分:0)

是的。

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

我使用命名卷来实现这一目标。 例如 - 模块:/ var / www / html / sites / all / modules 这将在var / lib / docker / volumes中创建一个卷...(您可以通过" docker inspect"来获取地址),并且该卷将具有与容器中提取的数据相同的数据。

注意 - 不同之处在于./ !!!