我希望能够在php-fpm容器中使用composer install。我目前的设置:
搬运工-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
发生在composer容器中,并且没有完成安装所需的php扩展。
php-fpm容器中的composer install
表示未安装composer
不知何故谷歌没有从我所看到的那里得到答案。
答案 0 :(得分:4)
您只需在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');"
答案 1 :(得分:0)
实际上我建议的是一个单独的轻量级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
答案 2 :(得分: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
请注意,composer可用于开发图像(例如:用于持续集成或测试)。生产映像里面不应该有作曲家......只有生成的供应商:)