Докер ограничения памяти 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 запустить установку php-fmp composer, он запускается через несколько минут и показывает лимит памяти ххххххххх. Я также пробовал memory_limit=-1.

Память моего ноутбука: 6 Гб.

На другом компе работает идеально.

До апгрейда памяти работало. Памяти раньше было 4гб сейчас 6гб. Проект, который я хочу запустить, это symfony.

Как вы установили лимит памяти? Если вы запустите следующую команду в контейнере php-fpm, что она вернет? php -r "echo ini_get('memory_limit').PHP_EOL;" Кстати, почему ваш контейнер называется «php-fmp» вместо «php-fpm»?

vctls 14.03.2019 20:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
10
1
10 475
2

Ответы 2

Вместо php -d memory_limit=-1 composer install попробуйте COMPOSER_MEMORY_LIMIT=-1 composer install. Composer запускает новый процесс php, который не соответствует предоставленным вами настройкам и может даже переопределить конфигурацию (я не уверен в этом на 100%).

Если это по-прежнему не помогает, откройте настройки Docker (щелкнув значок на панели задач), на вкладке «Дополнительно» вы можете указать, сколько ядер и сколько памяти разрешено потреблять Docker. Я думаю, что значение по умолчанию составляет 2 ГБ, и вы можете изменить его, например, на 4ГБ.

Composer имеет собственную переменную окружения COMPOSER_MEMORY_LIMIT, но по умолчанию использует memory_limit php.ini, если его собственная переменная не установлена. 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

Эта переменная среды будет учитываться каждый раз, когда вы запускаете Composer с помощью docker-compose:

docker-compose exec php-fmp composer [your composer command]

Другие вопросы по теме