2017-03-10 10 views
0

私はdockerfileからdrupalをビルドし、そのディレクトリを/ dr/var/ しかし、docker-composeビルドで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} \ 

ドッキングウィンドウ・コンファイル

# 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 

をドッキングウィンドウ-コンの両方を見て、dockerfileしてください:

sudo docker-compose build 
sudo docker-compose up 

を上記のコマンドの両方を実行するには - コンテナ内のディレクトリには存在しません{drupal-module folder}が見つかりましたが、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ドッカーにとっては受け入れられません。

私はこれを達成することができる名前付きボリュームでそれを行いました。 例:/ var/www/html/sites/all/modules これはvar/lib/docker/volumes ...にボリュームを作成します( "docker inspect"でアドレスを持つことができます)。あなたのコンテナで抽出されたのと同じデータを持っています。

注:違いは./にあります。

関連する問題