web-dev-qa-db-fra.com

Comment installer PHP composer à l'intérieur d'un conteneur Docker

J'essaie de trouver un moyen de créer un environnement de développement en utilisant docker et laravel.

J'ai le dockerfile suivant:

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

Laravel nécessite composer pour appeler composer dump-autoload lorsque vous travaillez avec la migration de la base de données. Par conséquent, j'ai besoin de composer dans le menu fixe) récipient.

J'ai essayé:

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

Mais quand j'appelle

docker-compose up
docker-compose exec app composer dump-autoload

Il renvoie l'erreur suivante:

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"

Je serais plus qu'heureux de savoir comment ajouter composer au PATH dans mon dockerfile ou quoi d'autre je peux faire pour dépasser cette erreur.

Merci pour votre aide. Aussi: this est le dépôt gitub si vous avez besoin de voir le fichier docker-compose.yml ou autre chose.

7
Andre

Je peux installer composer en ajoutant cette ligne sur mon dockerfile de test:

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

Voici le 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

Cela fonctionne pour moi, pour tester si le composer sont installés, j'accède à mon bash de conteneur et exécute:

composer --version
Composer version 1.6.5 2018-05-04 11:44:59
15
Brayan Caldera

Dans Dockerfile:

COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
1
Moghreb

Nous avons fondamentalement la même commande fonctionnant avec la différence,

--install-dir=/usr/local/bin

Alternativement, vous devez ajouter le chemin des fichiers bin composer bin à la variable $ PATH.

export PATH=$PATH":/usr/bin"
1
mutas

Créez un exécutable de votre fichier composer en utilisant

RUN curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/bin --filename=composer && chmod +x /usr/bin/composer 
1
Adnan Mumtaz