| |
| # Docker Images for Testing |
| |
| This directory contains a number of docker images to assist testing the |
| [gRPC PECL extension](http://pecl.php.net/package/grpc) against various |
| different PHP environments. |
| |
| |
| ## Build and Run Tests |
| ```sh |
| $ cd grpc |
| ``` |
| |
| To build all docker images: |
| ```sh |
| $ ./src/php/bin/build_all_docker_images.sh |
| ``` |
| |
| Or to only build some selected images |
| ```sh |
| $ ./src/php/bin/build_all_docker_images.sh grpc-ext php-src |
| ``` |
| |
| Or to only print out individual `docker build` commands |
| ```sh |
| $ ./src/php/bin/build_all_docker_images.sh --cmds |
| ``` |
| |
| To run all tests: |
| ```sh |
| $ ./src/php/bin/run_all_docker_images.sh |
| ``` |
| |
| Or to only run some selected images |
| ```sh |
| $ ./src/php/bin/run_all_docker_images.sh grpc-ext php-src |
| ``` |
| |
| Or to only print out individual `docker run` commands |
| ```sh |
| $ ./src/php/bin/run_all_docker_images.sh --cmds |
| ``` |
| |
| ## Build and Run Specified Image |
| ### `grpc-ext` |
| This image builds the full `grpc` PECL extension (effectively the current |
| release candidate), installs it against the current PHP version, and runs the |
| unit tests. |
| |
| Build `grpc-ext` docker image: |
| ```sh |
| $ cd grpc |
| $ docker build -t grpc-php/grpc-ext -f ./src/php/docker/grpc-ext/Dockerfile . |
| ``` |
| |
| Run image: |
| ```sh |
| $ docker run -it --rm grpc-php/grpc-ext |
| ``` |
| |
| ### `grpc-src` |
| |
| This image builds the `grpc` PECL extension in a 'thin' way, only containing |
| the gRPC extension source files. The gRPC C Core library is expected to be |
| installed separately and dynamically linked. The extension is installed |
| against the current PHP version. |
| |
| This also allows us to compile our `grpc` extension with some additional |
| configure options, like `--enable-tests`, which allows some additional unit |
| tests to be run. |
| |
| Build `grpc-src` docker image: |
| ```sh |
| $ cd grpc |
| $ docker build -t grpc-php/grpc-src -f ./src/php/docker/grpc-src/Dockerfile . |
| ``` |
| |
| Run image: |
| ```sh |
| $ docker run -it --rm grpc-php/grpc-src |
| ``` |
| |
| ### `alpine` |
| |
| This image builds the `grpc` extension against the current PHP version in an |
| Alpine-Linux base image. |
| |
| Build `alpine` docker image: |
| ```sh |
| $ cd grpc |
| $ docker build -t grpc-php/alpine -f ./src/php/docker/alpine/Dockerfile . |
| ``` |
| |
| 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. The default version of gcc in centos7 is gcc-4.8.5. Run `scl enable devtoolset-7 bash` command to enable gcc-7.3.1. |
| |
| Build `centos7` docker image: |
| ```sh |
| $ cd grpc |
| $ docker build -t grpc-gcc7/centos -f ./src/php/docker/centos7/Dockerfile . |
| ``` |
| |
| Run image: |
| ```sh |
| $ docker run -it --rm grpc-gcc7/centos |
| ``` |
| |
| ### `php-src` |
| |
| Instead of using a general purpose base docker image provided by PHP, here we |
| compile PHP itself from |
| [source](https://github.com/php/php-src). This will allow us to change some |
| `configure` options, like `--enable-debug`. Then we proceed to build the full |
| `grpc` PECL extension and run the unit tests. |
| |
| Build `php-src` docker image: |
| ```sh |
| $ cd grpc |
| $ docker build -t grpc-php/php-src -f ./src/php/docker/php-src/Dockerfile . |
| ``` |
| |
| Run image: |
| ```sh |
| $ docker run -it --rm grpc-php/php-src |
| ``` |
| |
| ### `php-zts` |
| |
| This image builds the `grpc` extension against the current PHP version with ZTS |
| enabled. |
| |
| Build `php-zts` docker image: |
| ```sh |
| $ cd grpc |
| $ docker build -t grpc-php/php-zts -f ./src/php/docker/php-zts/Dockerfile . |
| ``` |
| |
| Run image: |
| ```sh |
| $ docker run -it --rm grpc-php/php-zts |
| ``` |
| |
| ### `php-future` |
| |
| This image builds the `grpc` extension against the next future PHP version |
| currently in alpha, beta or release candidate stage. |
| |
| Build `php-future` docker image: |
| ```sh |
| $ cd grpc |
| $ docker build -t grpc-php/php-future -f ./src/php/docker/php-future/Dockerfile . |
| ``` |
| |
| Run image: |
| ```sh |
| $ docker run -it --rm grpc-php/php-future |
| ``` |
| ### `php5` |
| |
| NOTE: PHP 5.x has reached the end-of-life state and is no longer supported. |
| |
| |
| ### `fork-support` |
| |
| This image tests `pcntl_fork()` support and makes sure scripts using |
| `pcntl_fork()` don't freeze or crash. |
| |
| Build `grpc-ext` docker image: |
| ```sh |
| $ cd grpc |
| $ docker build -t grpc-php/fork-support -f ./src/php/docker/fork-support/Dockerfile . |
| ``` |
| |
| Run image: |
| ```sh |
| $ docker run -it --rm grpc-php/fork-support |
| ``` |