Как установить Composer с помощью docker exec

Я пытаюсь установить композитор в контейнер докеров. У меня есть контейнер laravel55, и я собираюсь установить в него композитор.

docker exec laravel55 curl --silent --show-error 
https://getcomposer.org/installer | php

#result
Composer (version 1.6.5) successfully installed to: /root/docker- 
images/docker-php7-apache2/composer.phar
Use it: php composer.phar

После установки, я пытаюсь использовать composer, но не работает:

 docker exec -w /var/www/html laravel55 php composer.phar install

#result
Could not open input file: composer.phar

Похоже, Composer не установился! Как я могу установить композитор в контейнер докеров?

Вам следует прочитать официальное руководство Docker по созданию и запуску пользовательских образов. Обычно вы не устанавливаете программное обеспечение в работающий контейнер с помощью docker exec, потому что все, что вы делаете, будет потеряно, как только контейнер закроется.

David Maze 08.07.2018 15:58
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
1
4 836
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Что ж, с вашей командой вы фактически устанавливаете composer.phar локально на своем хосте, вы просто выполняете команду curl внутри контейнера. Часть, стоящая за символом канала |, выполняется не в вашем докер-контейнере, а на вашем хосте. Во второй команде вы переключаете свой рабочий каталог на /var/www/html, где вы, очевидно, ожидаете composer.phar, но не в первой команде.

Итак, чтобы запустить всю команду в контейнере, вы можете попробовать следующее:

docker-compose exec -w /var/www/html laravel55 \
    sh -c "curl --silent --show-error https://getcomposer.org/installer | php"

Это сработало, спасибо. Я по ошибке написал docker-compose вместо docker, поэтому обновил свой вопрос.

Meysam Mahmoodi 10.07.2018 07:35

Вы можете использовать официальный образ композитора из dockerhub и смонтировать на нем том из контейнера вашего приложения.

т.е.

docker run -td --name my_app --volume /var/www myprivateregistry/myapp

docker run --rm --interactive --volumes-from my_app --volume /tmp:/tmp --workdir /var/www  composer install

Я в замешательстве. Работает ли composer install в /var/www?

Meysam Mahmoodi 10.07.2018 12:17

/ var / www - это том из вашего контейнерного приложения

Javi 11.07.2018 09:36

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