2017-03-10 28 views
0

我想從dockerfile構建drupal,並在容器目錄 -/var/www/html/sites/all/modules中使用該dockerfile在drupal中安裝模塊。 但是當我通過docker-compose構建dockerfile時,它會正確提取.. 只要我執行docker-compose up,文件就消失了,但卷已映射。 請看兩者的搬運工-撰寫和dockerfiledocker-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} \ 

搬運工-撰寫文件

# 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}文件夾,並將相同的文件夾映射到主機目錄。

請幫忙!

+0

你不能在同一個目錄下執行這兩個操作。已安裝的主機卷始終會覆蓋容器中的內容。 – Matt

+0

那麼有什麼替代選擇,即如何從主機訪問帶有drupal_module文件夾的modules目錄? –

+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」來獲取地址)與您的容器中提取的數據相同。

注意 - 區別在於./ !!!