我希望能够使用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