2016-10-23 2 views
1

Ich möchte Composer-Installation in meinem PHP-FPM-Container verwenden können. Meine aktuelle Setup:Docker - Composer in PHP-Container verwenden

Docker-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 

Aber natürlich meine command: install geschieht in dem Komponisten Behälter und muß nicht die erforderlichen PHP-Erweiterungen um die Installation abzuschließen.

Und composer install innerhalb php-fpm Container sagt Komponist nicht

Irgendwie installiert ist Google für diese eine Antwort nicht von dem, was ich gesehen habe.

Antwort

3

Sie müssen nur composer in Ihrem FPM-Container installieren.

So etwas wie

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

was Eigentlich würde ich vorschlagen, ein separater leichten php-cli Container (und andere Befehle) nur laufen Komponisten wäre. Es muss nicht "hartnäckig" laufen. Bei Interesse schau dir an, wie ich my image for running php tasks wie Composer oder Phpunit gemacht habe.

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

Eine sexy Art und Weise yo Komponist in Ihrem Bild hinzufügen:

# 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 

Beachten Sie, dass Komponisten für die Entwicklung Bilder nützlich sein können (zB: für Continuous Integration oder Tests). Ein Produktionsbild sollte keinen Composer enthalten ... Nur die generierten Hersteller :)

Verwandte Themen