Dockerとlaravelを使用して開発環境を作成する方法を考えています。
次の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
&& chmod -R o+rw laravel-master/bootstrap laravel-master/storage
Laravelでは、composer=を呼び出して、データベースの移行を行うときにdump-autoloadを呼び出すcomposer。したがって、Docker内でcomposer=容器。
私は試した:
RUN curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/bin --filename=composer
しかし、私が電話するとき
docker-compose up
docker-compose exec app composer dump-autoload
次のエラーがスローされます。
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"
Dockerfile内のPATHにcomposerを追加する方法、またはこのエラーを克服するために他にできることを教えてください。
ご協力ありがとうございました。また、 this は、docker-compose.ymlファイルなどを表示する必要がある場合のgitubリポジトリです。
私はインストールできますcomposer=テストdockerfileにこの行を追加:
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
これは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
composerがインストールされているかどうかをテストして、コンテナbashにアクセスして実行する:
composer --version
Composer version 1.6.5 2018-05-04 11:44:59
Dockerfileで:
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
基本的に同じコマンドを実行しますが、違いはありますが、
--install-dir=/usr/local/bin
または、composer binファイルのパスを$ PATH変数に追加する必要があります。
export PATH=$PATH":/usr/bin"
composerファイルの実行可能ファイルを使用して作成します
RUN curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/bin --filename=composer && chmod +x /usr/bin/composer