diff --git a/src/php/bin/build_all_docker_images.sh b/src/php/bin/build_all_docker_images.sh index 3a644387173..09bb1d6e907 100755 --- a/src/php/bin/build_all_docker_images.sh +++ b/src/php/bin/build_all_docker_images.sh @@ -16,7 +16,7 @@ set -e cd $(dirname $0)/../../.. -ALL_IMAGES=( grpc-ext grpc-src alpine php5 php-src php-future php-zts +ALL_IMAGES=( grpc-ext grpc-src alpine centos7 php5 php-src php-future php-zts fork-support ) if [[ "$1" == "--cmds" ]]; then diff --git a/src/php/docker/README.md b/src/php/docker/README.md index ab5acf84f7d..3df7039b8ce 100644 --- a/src/php/docker/README.md +++ b/src/php/docker/README.md @@ -95,6 +95,20 @@ Run image: ```sh $ docker run -it --rm grpc-php/alpine ``` +### `centos7` + +This image builds the `grpc` extension against the GCC version in Centos7 base image. + +Build `centos7` docker image: +```sh +$ cd grpc +$ docker build -t grpc-gcc5/centos -f ./src/php/docker/centos7/Dockerfile . +``` + +Run image: +```sh +$ docker run -it --rm grpc-gcc5/centos +``` ### `php-src` diff --git a/src/php/docker/centos7/Dockerfile b/src/php/docker/centos7/Dockerfile new file mode 100644 index 00000000000..e6491a0cb38 --- /dev/null +++ b/src/php/docker/centos7/Dockerfile @@ -0,0 +1,57 @@ +# Copyright 2019 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM centos:centos7 + +# Install PHP7.2 +RUN yum update -y && \ + yum install epel-release -y && \ + rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm && \ + rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && \ + yum --enablerepo=remi-php72 install php -y && \ + yum-config-manager --enable remi-php72 && \ + yum install -y php-fpm php-pear make php-devel wget libmpc-devel mpfr-devel gmp-devel yum-utils && \ + yum clean all -y + +ARG MAKEFLAGS=-j8 + +WORKDIR /tmp + +# Easy way to install gcc version +# devtoolset-3-toolchain(GCC-4) +# devtoolset-4-toolchain(GCC-5) +# devtoolset-6-toolchain(GCC-6) +# devtoolset-7-toolchain(GCC-7) +# etc + +RUN yum install -y centos-release-scl && \ + yum install -y devtoolset-4-gcc* + +SHELL [ "/usr/bin/scl", "enable", "devtoolset-4"] + +# Install phpunit +RUN wget https://phar.phpunit.de/phpunit-5.7.27.phar && \ + mv phpunit-5.7.27.phar /usr/local/bin/phpunit && \ + chmod +x /usr/local/bin/phpunit + + +WORKDIR /github/grpc + +COPY . . + +RUN pear package && \ + find . -name grpc-*.tgz | xargs -I{} pecl install {} + + +CMD ["/github/grpc/src/php/bin/run_tests.sh", "--skip-persistent-channel-tests"]