如何在 docker 容器中安装 PHP 编辑器

我试图找到一种使用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 在处理数据库迁移时调用 composer dump-autoload。因此,我需要 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的建议,或者我还能做些什么来超越这个错误。

感谢您的支持。另外:这是gitub存储库,如果您需要查看docker-compose.yml文件或其他任何内容。


答案 1

在 Dockerfile 中:

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

答案 2

我可以安装作曲家,在我的测试docker文件上添加这一行:

# 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

它适用于我,测试作曲家是否已安装,我可以访问我的容器bash并执行:

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

推荐