首页 > 解决方案 > 如何通过 Dockerfile 激活 GRPC PHP 扩展?

问题描述

我有这个 Dockerfile。当我尝试运行它时,在 Composer Update 行中它返回一个错误,即未安装扩展。

那是因为 php.ini 上没有激活 GRPC

我的问题是,如何通过终端激活它?

FROM php:7.2-apache
WORKDIR /var/www/html
COPY . ./
RUN apt-get update && apt-get install -y -q nodejs npm curl unzip git rake ruby-ronn zlib1g-dev libpng-dev && apt-get clean
RUN apt-get install php7.2=dev php-pear phpunit
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
RUN pecl install grpc
RUN docker-php-ext-install mbstring
RUN docker-php-ext-install zip
RUN docker-php-ext-install gd
RUN npm install
RUN npm install -g gulp-cli
RUN composer update
RUN gulp --env=production
EXPOSE 80 443

标签: dockerdockerfilegrpc

解决方案


你忘了激活grcp扩展,你可以使用评论下的代码#install protoc来激活,如果它已经激活,你会得到消息,RUN php -r "echo extension_loaded('grpc') ? 'yes' : 'no';" 我认为这种方式更好更简洁:

FROM php:7-apache

RUN apt-get update && apt-get install -y -q git rake ruby-ronn zlib1g-dev && apt-get clean
# install composer
RUN cd /usr/local/bin && curl -sS https://getcomposer.org/installer | php
RUN cd /usr/local/bin && mv composer.phar composer
RUN pecl install grpc
#install protoc
RUN mkdir -p /tmp/protoc && \
    curl -L https://github.com/google/protobuf/releases/download/v3.2.0/protoc-3.2.0-linux-x86_64.zip > /tmp/protoc/protoc.zip && \
    cd /tmp/protoc && \
    unzip protoc.zip && \
    cp /tmp/protoc/bin/protoc /usr/local/bin && \
    cd /tmp && \
    rm -r /tmp/protoc && \
    docker-php-ext-enable grpc

RUN php -r "echo extension_loaded('grpc') ? 'yes' : 'no';"
WORKDIR /app
COPY . /app
RUN composer install
RUN npm install 
RUN npm install -g gulp-cli
RUN gulp --env=production
EXPOSE 8181

推荐阅读