Como instalar o compositor de PHP dentro de um Contentor de docker

Tento arranjar uma forma de criar um ambiente dev usando o docker e o laravel.

tenho o seguinte ficheiro:

FROM php:7.1.3-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev \
    mysql-client libmagickwand-dev --no-install-recommends \
    && pecl install imagick \
    && docker-php-ext-enable imagick \
&& docker-php-ext-install mcrypt pdo_mysql
&& chmod -R o+rw laravel-master/bootstrap laravel-master/storage

o Laravel necessita que o compositor ligue para o composer dump-autoload ao trabalhar com a migração de bases de dados. Por isso, preciso de um compositor dentro do contentor do ancoradouro.

Eu tentei.
RUN curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/bin --filename=composer
Mas quando eu ligar ...
docker-compose up
docker-compose exec app composer dump-autoload

ele lança o seguinte erro:

rpc error: code = 13 desc = invalid header field value "oci runtime error: exec failed: container_linux.go:247: starting container process caused \"exec: \\\"composer\\\": executable file not found in $PATH\"\n"
Eu ficaria mais do que feliz por um conselho de Como posso adicionar compositor ao Caminho dentro do meu ficheiro dockerfile ou o que mais posso fazer para ultrapassar este erro.

Obrigado pelo apoio. Além disso: Este é o repositório gitub se precisar de ver a composição do acoplador.arquivo yml ou qualquer outra coisa.

Author: Andre, 2018-07-20

3 answers

Posso instalar o compositor adicionando esta linha no meu ficheiro de testes:

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

Aqui está o ficheiro dockerfile:

FROM php:7.1.3-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev \
    mysql-client libmagickwand-dev --no-install-recommends \
    && pecl install imagick \
    && docker-php-ext-enable imagick \
&& docker-php-ext-install mcrypt pdo_mysql

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

Funciona para mim, para testar se o compositor está instalado eu acedo à minha Bash container e executo:

composer --version
Composer version 1.6.5 2018-05-04 11:44:59
 1
Author: Brayan Caldera, 2018-07-20 16:04:50
Temos basicamente o mesmo comando a funcionar com a diferença.
--install-dir=/usr/local/bin

Em alternativa, deverá adicionar a localização dos ficheiros BIN do compositor à variável $PATH.

export PATH=$PATH":/usr/bin"
 1
Author: mutas, 2018-07-20 13:40:00

Crie um executável do seu ficheiro de compositor usando

RUN curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/bin --filename=composer && chmod +x /usr/bin/composer 
 1
Author: Adnan Mumtaz, 2018-07-20 13:40:22