我在docker上安装 composer安装时遇到问题。这是我的 docker-compose 文件:
version: '3'
services:
webserver:
image: nginx:latest
ports:
- 80:80
- 433:433
volumes:
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./:/var/www/html/
links:
- php-fmp
- db
networks:
- app-network
php-fmp:
build: docker/php-fmp
volumes:
- ./:/var/www/html/
ports:
- 9000:9000
links:
- db
networks:
- app-network
db:
image: mysql
ports:
- 3306:3306
volumes:
- /var/lib/mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
- MYSQL_DATABASE=goexpress
- MYSQL_USER=root
- MYSQL_PASSWORD=root
- MYSQL_ROOT_PASSWORD=docker
networks:
- app-network
networks:
app-network:
driver: bridge
我尝试执行 docker-compose run php-fmp composer install ,它在几分钟后开始显示,它显示内存限制xxxxxxxxx 。我也尝试过 memory_limit = -1 。
我的笔记本电脑内存:6GB。
在另一台PC上,它运行完美。
在升级内存之前它已经起作用。以前的内存是4GB,现在是6GB。我要运行的项目是symfony。
答案 0 :(得分:7)
Composer具有自己的COMPOSER_MEMORY_LIMIT
环境变量,但是在未设置其自身变量的情况下,默认情况下使用php.ini的memory_limit
。 https://getcomposer.org/doc/03-cli.md#composer-memory-limit
使用Docker Compose,您需要将COMPOSER_MEMORY_LIMIT
作为环境变量传递到安装Composer的容器。您的docker-compose.yml文件如下所示:
services:
php-fmp: //the name of your container (as per your question)
environment:
- COMPOSER_MEMORY_LIMIT=-1 //-1 means unlimited
每次使用docker-compose运行Composer时,都会考虑此环境变量:
docker-compose exec php-fmp composer [your composer command]
答案 1 :(得分:0)
尝试使用php -d memory_limit=-1 composer install
而不是COMPOSER_MEMORY_LIMIT=-1 composer install
。 Composer启动了一个新的php进程,该进程不遵循您提供的设置,甚至可能会覆盖该配置(我对此不是100%的肯定)。
如果这仍然不能帮助打开Docker的首选项(通过单击任务栏上的图标),在Advanced(高级)选项卡下,您可以指定允许使用Docker的内核数和内存量。我认为默认值为2GB,您可能需要将其更改为例如4GB。