2017-02-11 21 views
0

ドッカー作曲家で2つのサービスを構築しようとしています。最初のサービス(アプリケーション)は単純なボリュームコンテナで、2番目(php-pm)はPHPプロセスマネージャです。問題は、私の2番目のサービスが、最初のサービスで共有されているSymfonyフォルダにアクセスしようとしていることです。何らかの理由で、両方のサービスが作成されるまで、フォルダーは存在しません。最後のコマンドは動作しませんドッカーサービス間でボリュームを共有

FROM ubuntu:16.04 

#INSTALL PHP AND HIS DEPENDENCIES 
RUN apt-get update && \ 
    apt-get install -y php7.0-cgi php-xml && \ 
    ln -s /usr/lib/cgi-bin/php /usr/bin/php7.0-cgi 

#INSTALL COMPOSER 
RUN apt-get install -y curl && \ 
    curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \ 
    chmod +x /usr/local/bin/composer 

#INSTALL PPM 
RUN apt-get install -y git && \ 
    cd var && \ 
    git clone https://github.com/php-pm/php-pm.git && \ 
    cd php-pm && \ 
    composer install && \ 
    ln -s `pwd`/bin/ppm /usr/local/bin/ppm 


#This folder doesn't exist, why?? 
RUN cd /var/www/symfony-pm &&/
    composer require php-pm/php-pm:dev-master &&/
    composer require php-pm/httpkernel-adapter:dev-master &&/
    composer install 

dockerfile

ドッキングウィンドウ-compose.yml

application: 
    image: tianon/true 
    volumes: 
     - /home/Projects/symfony-pm:/var/www/symfony-pm 
     - /home/Projects/symfony-pm/app/logs:/var/www/symfony-pm/app/logs 
php-pm: 
    build: ./ 
    dockerfile: dockerfile-php-pm 
    ports: 
     - 9999:9000 
    volumes_from: 
     - application 
    stdin_open: true 
    tty: true 

第2のサービス。 エラーメッセージは '/ var/www/symfony-pm'にアクセスできません:そのようなファイルまたはディレクトリはありません。

両方のサービスが構築された後にチェックしたので、ディレクトリが存在します。

+0

ある

もう一つの可能​​性はENTRYPOINT使用して、コンテナの起動時にcomposer実行を持っているのですか? –

答えて

0

volumes_fromは、コンテナの起動時にディレクトリがマウントされるため、フォルダが存在しません。しかし、コンテナイメージの構築中にアクセスしようとします。私はどうなるのか

は、ビルド時に/home/Projects/symfony-pmCOPY内容です:

COPY /home/Projects/symfony-pm /var/www/symfony-pm 
RUN composer require ... 

今、あなたはあなたのアプリを更新するたびに、あなたがイメージを再構築する必要があります。

entrypoint.sh

#!/bin/sh 
cd /var/www/symfony-pm && composer ... 

Dockerfile:あなたのdockerfileは

COPY entrypoint.sh/
ENTRYPOINT /entrypoint.sh 
関連する問題