2016-10-23 5 views
1

私のphp-fpmコンテナ内でコンポーザインストールを使用できるようにします。私の現在の設定:Docker - PHPコンテナ内でComposerを使用する

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

version: '2' 

services: 
    web: 
     image: nginx 
     ports: 
      - "80:80" 
     volumes: 
      - ./public:/var/www/html 
      - ./vhost.conf:/etc/nginx/conf.d/vhost.conf 

    fpm: 
     image: php:fpm 
     volumes: 
      - ./public:/var/www/html 
     expose: 
      - 9000 

    composer: 
     restart: 'no' 
     image: composer/composer 
     command: install --working-dir=/var/www/html 
     volumes_from: 
      - fpm 

しかし、明らかに私のcommand: installが作曲コンテナに起こっているとdoesntのは、インストールを完了するために必要なPHP拡張モジュールを持っています。 PHP-FPMコンテナ内

そしてcomposer installは作曲が

どういうわけか、Googleは私が見たものから、このための答えを持っていませんがインストールされていないと言います。

答えて

3

fpmコンテナにcomposerをインストールするだけで済みます。実は私は作曲(や他のコマンド)を実行するための独立した軽量のphp-cliのコンテナになりますことをお勧め何

FROM php:5.6-fpm 

... 
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ 
    && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \ 
    && php -r "unlink('composer-setup.php');" 
0

よう

何か。それは "永続的な"方法を実行する必要はありません。興味があれば私はどのように作ったかmy image for running php tasks作曲家やphpunitのようです。

docker run -ti --rm -v /path/to/your/project:/app kmwrona/ci-stack /usr/bin/composer install --quiet 
docker run -ti --rm -v /path/to/your/project:/app kmwrona/ci-stack /usr/bin/composer dump-autoload --optimize 
docker run -ti -a STDOUT -v /path/to/your/project:/app kmwrona/ci-stack /usr/bin/phpunit --log-junit /app/junit.xml --testdox-html /app/unit-tests-html-report.html 
0

よあなたのイメージに作曲を追加し、よりセクシーな方法:作曲は、開発の画像(:継続的インテグレーションやテスト用など)のために有用であることを

# Install Composer 
ADD https://getcomposer.org/installer /tmp/composer-setup.php 
RUN php /tmp/composer-setup.php --install-dir /usr/local/bin/ --filename composer \ 
&& rm /tmp/composer-setup.php 

注意。プロダクションイメージにはコンポーザーがありません...生成されたベンダーのみ:)

関連する問題