docker - 如何通过 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
解决方案
你忘了激活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
推荐阅读
- c++ - Enet:enet 可以处理多少个连续的连接?
- linux - 如何使用 Bash Shell 检查 Java 版本?
- .net - 如何发布特定文件而不是发布整个 SQL Server 数据库项目
- linux - 将程序的输出日志传递到函数中,同时将返回码存储在变量中
- c# - 如何绑定到列表内的元素
- html - 根据 HTML 文本中的标签对文本进行分组
- c# - 在 Xamarin 应用程序中使用 Identity Server
- html - 如何在另一个 HTML 页面中包含一个 HTML 页面
- php - 从 Laravel 存储中检索视频
- mysql - 为什么我在列存在时不断收到posts.ID 未知列?