blob: 26741d2649bf1de6d88133a97bc2a4c59e4fbbb2 [file] [log] [blame] [view]
# 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
```