xref: /aosp_15_r20/external/grpc-grpc/src/php/docker/README.md (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker
2*cc02d7e2SAndroid Build Coastguard Worker# Docker Images for Testing
3*cc02d7e2SAndroid Build Coastguard Worker
4*cc02d7e2SAndroid Build Coastguard WorkerThis directory contains a number of docker images to assist testing the
5*cc02d7e2SAndroid Build Coastguard Worker[gRPC PECL extension](http://pecl.php.net/package/grpc) against various
6*cc02d7e2SAndroid Build Coastguard Workerdifferent PHP environments.
7*cc02d7e2SAndroid Build Coastguard Worker
8*cc02d7e2SAndroid Build Coastguard Worker
9*cc02d7e2SAndroid Build Coastguard Worker## Build and Run Tests
10*cc02d7e2SAndroid Build Coastguard Worker```sh
11*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc
12*cc02d7e2SAndroid Build Coastguard Worker```
13*cc02d7e2SAndroid Build Coastguard Worker
14*cc02d7e2SAndroid Build Coastguard WorkerTo build all docker images:
15*cc02d7e2SAndroid Build Coastguard Worker```sh
16*cc02d7e2SAndroid Build Coastguard Worker$ ./src/php/bin/build_all_docker_images.sh
17*cc02d7e2SAndroid Build Coastguard Worker```
18*cc02d7e2SAndroid Build Coastguard Worker
19*cc02d7e2SAndroid Build Coastguard WorkerOr to only build some selected images
20*cc02d7e2SAndroid Build Coastguard Worker```sh
21*cc02d7e2SAndroid Build Coastguard Worker$ ./src/php/bin/build_all_docker_images.sh grpc-ext php-src
22*cc02d7e2SAndroid Build Coastguard Worker```
23*cc02d7e2SAndroid Build Coastguard Worker
24*cc02d7e2SAndroid Build Coastguard WorkerOr to only print out individual `docker build` commands
25*cc02d7e2SAndroid Build Coastguard Worker```sh
26*cc02d7e2SAndroid Build Coastguard Worker$ ./src/php/bin/build_all_docker_images.sh --cmds
27*cc02d7e2SAndroid Build Coastguard Worker```
28*cc02d7e2SAndroid Build Coastguard Worker
29*cc02d7e2SAndroid Build Coastguard WorkerTo run all tests:
30*cc02d7e2SAndroid Build Coastguard Worker```sh
31*cc02d7e2SAndroid Build Coastguard Worker$ ./src/php/bin/run_all_docker_images.sh
32*cc02d7e2SAndroid Build Coastguard Worker```
33*cc02d7e2SAndroid Build Coastguard Worker
34*cc02d7e2SAndroid Build Coastguard WorkerOr to only run some selected images
35*cc02d7e2SAndroid Build Coastguard Worker```sh
36*cc02d7e2SAndroid Build Coastguard Worker$ ./src/php/bin/run_all_docker_images.sh grpc-ext php-src
37*cc02d7e2SAndroid Build Coastguard Worker```
38*cc02d7e2SAndroid Build Coastguard Worker
39*cc02d7e2SAndroid Build Coastguard WorkerOr to only print out individual `docker run` commands
40*cc02d7e2SAndroid Build Coastguard Worker```sh
41*cc02d7e2SAndroid Build Coastguard Worker$ ./src/php/bin/run_all_docker_images.sh --cmds
42*cc02d7e2SAndroid Build Coastguard Worker```
43*cc02d7e2SAndroid Build Coastguard Worker
44*cc02d7e2SAndroid Build Coastguard Worker## Build and Run Specified Image
45*cc02d7e2SAndroid Build Coastguard Worker### `grpc-ext`
46*cc02d7e2SAndroid Build Coastguard WorkerThis image builds the full `grpc` PECL extension (effectively the current
47*cc02d7e2SAndroid Build Coastguard Workerrelease candidate), installs it against the current PHP version, and runs the
48*cc02d7e2SAndroid Build Coastguard Workerunit tests.
49*cc02d7e2SAndroid Build Coastguard Worker
50*cc02d7e2SAndroid Build Coastguard WorkerBuild `grpc-ext` docker image:
51*cc02d7e2SAndroid Build Coastguard Worker```sh
52*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc
53*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/grpc-ext -f ./src/php/docker/grpc-ext/Dockerfile .
54*cc02d7e2SAndroid Build Coastguard Worker```
55*cc02d7e2SAndroid Build Coastguard Worker
56*cc02d7e2SAndroid Build Coastguard WorkerRun image:
57*cc02d7e2SAndroid Build Coastguard Worker```sh
58*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm grpc-php/grpc-ext
59*cc02d7e2SAndroid Build Coastguard Worker```
60*cc02d7e2SAndroid Build Coastguard Worker
61*cc02d7e2SAndroid Build Coastguard Worker### `grpc-src`
62*cc02d7e2SAndroid Build Coastguard Worker
63*cc02d7e2SAndroid Build Coastguard WorkerThis image builds the `grpc` PECL extension in a 'thin' way, only containing
64*cc02d7e2SAndroid Build Coastguard Workerthe gRPC extension source files. The gRPC C Core library is expected to be
65*cc02d7e2SAndroid Build Coastguard Workerinstalled separately and dynamically linked. The extension is installed
66*cc02d7e2SAndroid Build Coastguard Workeragainst the current PHP version.
67*cc02d7e2SAndroid Build Coastguard Worker
68*cc02d7e2SAndroid Build Coastguard WorkerThis also allows us to compile our `grpc` extension with some additional
69*cc02d7e2SAndroid Build Coastguard Workerconfigure options, like `--enable-tests`, which allows some additional unit
70*cc02d7e2SAndroid Build Coastguard Workertests to be run.
71*cc02d7e2SAndroid Build Coastguard Worker
72*cc02d7e2SAndroid Build Coastguard WorkerBuild `grpc-src` docker image:
73*cc02d7e2SAndroid Build Coastguard Worker```sh
74*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc
75*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/grpc-src -f ./src/php/docker/grpc-src/Dockerfile .
76*cc02d7e2SAndroid Build Coastguard Worker```
77*cc02d7e2SAndroid Build Coastguard Worker
78*cc02d7e2SAndroid Build Coastguard WorkerRun image:
79*cc02d7e2SAndroid Build Coastguard Worker```sh
80*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm grpc-php/grpc-src
81*cc02d7e2SAndroid Build Coastguard Worker```
82*cc02d7e2SAndroid Build Coastguard Worker
83*cc02d7e2SAndroid Build Coastguard Worker### `alpine`
84*cc02d7e2SAndroid Build Coastguard Worker
85*cc02d7e2SAndroid Build Coastguard WorkerThis image builds the `grpc` extension against the current PHP version in an
86*cc02d7e2SAndroid Build Coastguard WorkerAlpine-Linux base image.
87*cc02d7e2SAndroid Build Coastguard Worker
88*cc02d7e2SAndroid Build Coastguard WorkerBuild `alpine` docker image:
89*cc02d7e2SAndroid Build Coastguard Worker```sh
90*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc
91*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/alpine -f ./src/php/docker/alpine/Dockerfile .
92*cc02d7e2SAndroid Build Coastguard Worker```
93*cc02d7e2SAndroid Build Coastguard Worker
94*cc02d7e2SAndroid Build Coastguard WorkerRun image:
95*cc02d7e2SAndroid Build Coastguard Worker```sh
96*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm grpc-php/alpine
97*cc02d7e2SAndroid Build Coastguard Worker```
98*cc02d7e2SAndroid Build Coastguard Worker### `centos7`
99*cc02d7e2SAndroid Build Coastguard Worker
100*cc02d7e2SAndroid Build Coastguard WorkerThis 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.
101*cc02d7e2SAndroid Build Coastguard Worker
102*cc02d7e2SAndroid Build Coastguard WorkerBuild `centos7` docker image:
103*cc02d7e2SAndroid Build Coastguard Worker```sh
104*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc
105*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-gcc7/centos -f ./src/php/docker/centos7/Dockerfile .
106*cc02d7e2SAndroid Build Coastguard Worker```
107*cc02d7e2SAndroid Build Coastguard Worker
108*cc02d7e2SAndroid Build Coastguard WorkerRun image:
109*cc02d7e2SAndroid Build Coastguard Worker```sh
110*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm grpc-gcc7/centos
111*cc02d7e2SAndroid Build Coastguard Worker```
112*cc02d7e2SAndroid Build Coastguard Worker
113*cc02d7e2SAndroid Build Coastguard Worker### `php-src`
114*cc02d7e2SAndroid Build Coastguard Worker
115*cc02d7e2SAndroid Build Coastguard WorkerInstead of using a general purpose base docker image provided by PHP, here we
116*cc02d7e2SAndroid Build Coastguard Workercompile PHP itself from
117*cc02d7e2SAndroid Build Coastguard Worker[source](https://github.com/php/php-src). This will allow us to change some
118*cc02d7e2SAndroid Build Coastguard Worker`configure` options, like `--enable-debug`. Then we proceed to build the full
119*cc02d7e2SAndroid Build Coastguard Worker`grpc` PECL extension and run the unit tests.
120*cc02d7e2SAndroid Build Coastguard Worker
121*cc02d7e2SAndroid Build Coastguard WorkerBuild `php-src` docker image:
122*cc02d7e2SAndroid Build Coastguard Worker```sh
123*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc
124*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/php-src -f ./src/php/docker/php-src/Dockerfile .
125*cc02d7e2SAndroid Build Coastguard Worker```
126*cc02d7e2SAndroid Build Coastguard Worker
127*cc02d7e2SAndroid Build Coastguard WorkerRun image:
128*cc02d7e2SAndroid Build Coastguard Worker```sh
129*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm grpc-php/php-src
130*cc02d7e2SAndroid Build Coastguard Worker```
131*cc02d7e2SAndroid Build Coastguard Worker
132*cc02d7e2SAndroid Build Coastguard Worker### `php-zts`
133*cc02d7e2SAndroid Build Coastguard Worker
134*cc02d7e2SAndroid Build Coastguard WorkerThis image builds the `grpc` extension against the current PHP version with ZTS
135*cc02d7e2SAndroid Build Coastguard Workerenabled.
136*cc02d7e2SAndroid Build Coastguard Worker
137*cc02d7e2SAndroid Build Coastguard WorkerBuild `php-zts` docker image:
138*cc02d7e2SAndroid Build Coastguard Worker```sh
139*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc
140*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/php-zts -f ./src/php/docker/php-zts/Dockerfile .
141*cc02d7e2SAndroid Build Coastguard Worker```
142*cc02d7e2SAndroid Build Coastguard Worker
143*cc02d7e2SAndroid Build Coastguard WorkerRun image:
144*cc02d7e2SAndroid Build Coastguard Worker```sh
145*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm grpc-php/php-zts
146*cc02d7e2SAndroid Build Coastguard Worker```
147*cc02d7e2SAndroid Build Coastguard Worker
148*cc02d7e2SAndroid Build Coastguard Worker### `php-future`
149*cc02d7e2SAndroid Build Coastguard Worker
150*cc02d7e2SAndroid Build Coastguard WorkerThis image builds the `grpc` extension against the next future PHP version
151*cc02d7e2SAndroid Build Coastguard Workercurrently in alpha, beta or release candidate stage.
152*cc02d7e2SAndroid Build Coastguard Worker
153*cc02d7e2SAndroid Build Coastguard WorkerBuild `php-future` docker image:
154*cc02d7e2SAndroid Build Coastguard Worker```sh
155*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc
156*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/php-future -f ./src/php/docker/php-future/Dockerfile .
157*cc02d7e2SAndroid Build Coastguard Worker```
158*cc02d7e2SAndroid Build Coastguard Worker
159*cc02d7e2SAndroid Build Coastguard WorkerRun image:
160*cc02d7e2SAndroid Build Coastguard Worker```sh
161*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm grpc-php/php-future
162*cc02d7e2SAndroid Build Coastguard Worker```
163*cc02d7e2SAndroid Build Coastguard Worker### `php5`
164*cc02d7e2SAndroid Build Coastguard Worker
165*cc02d7e2SAndroid Build Coastguard WorkerNOTE: PHP 5.x has reached the end-of-life state and is no longer supported.
166*cc02d7e2SAndroid Build Coastguard Worker
167*cc02d7e2SAndroid Build Coastguard Worker
168*cc02d7e2SAndroid Build Coastguard Worker### `fork-support`
169*cc02d7e2SAndroid Build Coastguard Worker
170*cc02d7e2SAndroid Build Coastguard WorkerThis image tests `pcntl_fork()` support and makes sure scripts using
171*cc02d7e2SAndroid Build Coastguard Worker`pcntl_fork()` don't freeze or crash.
172*cc02d7e2SAndroid Build Coastguard Worker
173*cc02d7e2SAndroid Build Coastguard WorkerBuild `grpc-ext` docker image:
174*cc02d7e2SAndroid Build Coastguard Worker```sh
175*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc
176*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/fork-support -f ./src/php/docker/fork-support/Dockerfile .
177*cc02d7e2SAndroid Build Coastguard Worker```
178*cc02d7e2SAndroid Build Coastguard Worker
179*cc02d7e2SAndroid Build Coastguard WorkerRun image:
180*cc02d7e2SAndroid Build Coastguard Worker```sh
181*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm grpc-php/fork-support
182*cc02d7e2SAndroid Build Coastguard Worker```