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.
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
Dans Dockerfile:
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
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"
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