Docker语言 - 在PHP容器中使用Composer



我希望能够使用composer安装在我的php-fpm容器内。我的当前设置:

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显示未安装composer

从我所看到的来看,谷歌并没有给出答案。

你只需要在你的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');"

在你的图像中添加作曲家的更性感的方式:

# 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可以用于开发映像(例如:用于持续集成或测试)。制作图像中不应该有作曲家……只有生成的供应商:)

实际上,我建议使用一个单独的轻量级php-cli容器来运行composer(和其他命令)。它不必以"持久"的方式运行。如果有兴趣,看看我是如何做我的图像运行php任务,如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

相关内容

  • 没有找到相关文章

最新更新