首页 > 解决方案 > 作曲家内存限制泊坞窗

问题描述

我在 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。

在另一台电脑上它运行完美。

在升级内存之前它已经工作了。之前的内存是 4GB 现在是 6GB。我要运行的项目是 symfony。

标签: phpsymfonydockerdocker-composecomposer-php

解决方案


Composer 有自己的环境变量,但在未设置自己的变量时默认COMPOSER_MEMORY_LIMIT使用 php.ini 的。https://getcomposer.org/doc/03-cli.md#composer-memory-limitmemory_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]

推荐阅读