如何在Docker中为PHP7.1安装指定版本的Composer
解决PHP7.1环境下Docker安装Composer2.2的问题
问题出在你当前的Docker配置里,两次安装的都是Composer最新版本(2.3+),而这个版本已经放弃了PHP7.1的支持,导致连composer self-update --2.2都没法执行——因为高版本Composer在PHP7.1上根本跑不起来,直接触发报错终止。
直接安装指定的Composer 2.2 LTS版本即可解决,下面是两种可行的修改方案:
方案一:通过curl直接安装指定版本
修改Dockerfile中安装Composer的步骤,明确指定2.2版本的安装包:
FROM php:7.1-fpm-alpine RUN docker-php-ext-install pdo pdo_mysql sockets # 直接安装Composer 2.2 LTS版本 RUN curl -sS https://getcomposer.org/installer | php -- \ --install-dir=/usr/local/bin --filename=composer --version=2.2.24 WORKDIR /app COPY . . RUN composer install
注:
2.2.24是Composer 2.2分支的最新稳定版,你也可以用2.2.*自动拉取该分支的最新版本。
方案二:从Composer官方指定版本镜像复制
利用Composer官方的2.2版本镜像,直接复制已编译好的可执行文件,避免手动安装的步骤:
FROM php:7.1-fpm-alpine RUN docker-php-ext-install pdo pdo_mysql sockets # 从composer:2.2镜像复制可执行文件 COPY --from=composer:2.2 /usr/bin/composer /usr/local/bin/composer WORKDIR /app COPY . . RUN composer install
原配置失败的原因
原Dockerfile中你先通过curl安装了最新版Composer,随后又从composer:latest镜像复制了一次最新版,这两步都是在安装不兼容PHP7.1的高版本Composer。当你尝试执行composer self-update --2.2时,高版本Composer启动就会检查PHP版本,直接抛出错误终止,根本没机会执行更新命令。
内容的提问来源于stack exchange,提问作者hsnsd
相关产品推荐
相关产品推荐

