代码之家  ›  专栏  ›  技术社区  ›  Andre

如何在Docker容器中安装php composer

  •  0
  • Andre  · 技术社区  · 7 年前

    我试图找到一种方法来创建一个使用Docker和Laravel的开发环境。

    我有以下文件:

    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中添加composer,或者我能做些什么来超越这个错误。

    谢谢你的支持。 也: this 如果需要查看docker-compose.yml文件或其他任何文件,则为gitub存储库。

    3 回复  |  直到 7 年前
        1
  •  3
  •   Brayan Caldera    7 年前

    我可以在我的测试文件上安装composer添加这一行:

    # 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
    
        2
  •  1
  •   mutas    7 年前

    我们基本上有相同的命令在运行,

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

    或者,您应该将composer bin文件路径添加到$path变量中。

    export PATH=$PATH":/usr/bin"
    
        3
  •  1
  •   FULL STACK DEV    7 年前

    使用创建作曲家文件的可执行文件

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