【问题标题】:Docker - Using Composer inside PHP containerDocker - 在 PHP 容器中使用 Composer
【发布时间】:2017-03-05 05:31:04
【问题描述】:

我希望能够在我的 php-fpm 容器中使用 composer install。我目前的设置:

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

但显然我的command: install 发生在作曲家容器中,并且没有完成安装所需的 php 扩展。

而 php-fpm 容器内的 composer install 表示未安装作曲家

据我所见,谷歌不知何故对此没有答案。

【问题讨论】:

    标签: php docker composer-php


    【解决方案1】:

    您只需在 fpm 容器中安装 composer

    有点像

    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');"
    

    【讨论】:

      【解决方案2】:

      实际上,我建议使用单独的轻量级 php-cli 容器来运行 composer(和其他命令)。它不必以“持久”的方式运行。如果有兴趣看看我是如何做到my image for running php tasks 的,比如composer 或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
      

      【讨论】:

        【解决方案3】:

        一种更性感的方式将作曲家添加到您的图像中:

        # 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
        

        请注意,composer 可用于开发图像(例如:用于持续集成或测试)。生产图像不应该在里面有作曲家......只有生成的供应商:)

        【讨论】:

          猜你喜欢
          • 2021-07-08
          • 2016-12-13
          • 2019-03-18
          • 2018-05-12
          • 1970-01-01
          • 2016-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多