3939 load : true
4040 tags : kooldev/php:${{ matrix.version }}${{ matrix.type }}
4141
42- - name : Tests
42+ - name : Tests - Basic
4343 run : |
4444 docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -v
4545 docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} composer -V
5050 docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep readline
5151 docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m
5252
53+ - name : Tests - Dockerize
54+ run : |
55+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} dockerize --version
56+ # Test dockerize template rendering
57+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} sh -c 'echo "{{ .Env.TEST_VAR }}" > /tmp/test.tmpl && TEST_VAR=hello dockerize -template /tmp/test.tmpl:/tmp/test.out && cat /tmp/test.out | grep hello'
58+
59+ - name : Tests - PHP Extensions
60+ run : |
61+ # Core extensions that must be present in all images
62+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i bcmath
63+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i gd
64+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i intl
65+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i pdo_mysql
66+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i pdo_pgsql
67+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i redis
68+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i zip
69+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i mbstring
70+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i ldap
71+
72+ - name : Tests - Production Checks
73+ if : matrix.type == '-prod'
74+ run : |
75+ # OPcache must be enabled in production
76+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i "Zend OPcache"
77+ # Xdebug must NOT be present in production (even when ENABLE_XDEBUG=true)
78+ docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i xdebug && exit 1 || echo "OK: xdebug not in prod"
79+
80+ - name : Tests - Development Checks
81+ if : matrix.type == ''
82+ run : |
83+ # pcov should be available in dev
84+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i pcov
85+ # xdebug should be available when enabled
86+ docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}${{ matrix.type }} php -m | grep -i xdebug
87+
5388 - name : Build and push
5489 uses : docker/build-push-action@v6
5590 if : github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php'
@@ -81,23 +116,50 @@ jobs:
81116 docker run kooldev/php:${{ matrix.version }}-node${{ matrix.type }} npm -v
82117 docker run kooldev/php:${{ matrix.version }}-node${{ matrix.type }} yarn -v
83118
84- - name : Tests (nginx)
119+ - name : Tests (nginx) - Basic
85120 run : |
86121 docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -v
87122 docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} composer -V
88123 docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} composer1 -V
89124 docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -v
90125 docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} composer -V
91126 docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} composer1 -V
92- docker run -e ASUSER=1000 kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} dockerize --version
93-
94127 docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep readline
95128 docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m
96-
97129 docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} nginx -v
98130 docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} nginx -T
99131 docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} supervisord version
100132
133+ - name : Tests (nginx) - Dockerize
134+ run : |
135+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} dockerize --version
136+ # Test dockerize template rendering
137+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} sh -c 'echo "{{ .Env.TEST_VAR }}" > /tmp/test.tmpl && TEST_VAR=hello dockerize -template /tmp/test.tmpl:/tmp/test.out && cat /tmp/test.out | grep hello'
138+
139+ - name : Tests (nginx) - PHP Extensions
140+ run : |
141+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i bcmath
142+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i gd
143+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i intl
144+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i pdo_mysql
145+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i pdo_pgsql
146+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i redis
147+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i zip
148+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i mbstring
149+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i ldap
150+
151+ - name : Tests (nginx) - Production Checks
152+ if : matrix.type == '-prod'
153+ run : |
154+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i "Zend OPcache"
155+ docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i xdebug && exit 1 || echo "OK: xdebug not in prod"
156+
157+ - name : Tests (nginx) - Development Checks
158+ if : matrix.type == ''
159+ run : |
160+ docker run kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i pcov
161+ docker run -e ENABLE_XDEBUG=true kooldev/php:${{ matrix.version }}-nginx${{ matrix.type }} php -m | grep -i xdebug
162+
101163 - name : Build and push (nginx)
102164 uses : docker/build-push-action@v6
103165 if : github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php'
@@ -116,10 +178,157 @@ jobs:
116178 push : true
117179 tags : kooldev/php:${{ matrix.version }}-node${{ matrix.type }}
118180
181+ build-debian :
182+ runs-on : ubuntu-latest
183+
184+ strategy :
185+ matrix :
186+ type : ['', '-prod']
187+
188+ steps :
189+ - name : Checkout code
190+ uses : actions/checkout@v5.0.0
191+
192+ - name : Setup QEMU
193+ uses : docker/setup-qemu-action@v3
194+
195+ - name : Setup Docker Buildx
196+ uses : docker/setup-buildx-action@v3
197+
198+ - name : Login to DockerHub
199+ uses : docker/login-action@v3
200+ if : github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php'
201+ with :
202+ username : ${{ secrets.DOCKER_USERNAME }}
203+ password : ${{ secrets.DOCKER_PASSWORD }}
204+
205+ - name : Build and export to Docker (Debian)
206+ uses : docker/build-push-action@v6
207+ with :
208+ context : 8.4-debian${{ matrix.type }}
209+ load : true
210+ tags : kooldev/php:8.4-debian${{ matrix.type }}
211+
212+ - name : Tests (Debian) - Basic
213+ run : |
214+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -v
215+ docker run kooldev/php:8.4-debian${{ matrix.type }} composer -V
216+ docker run kooldev/php:8.4-debian${{ matrix.type }} composer1 -V
217+ docker run -e ASUSER=1000 kooldev/php:8.4-debian${{ matrix.type }} php -v
218+ docker run -e ASUSER=1000 kooldev/php:8.4-debian${{ matrix.type }} composer -V
219+ docker run -e ASUSER=1000 kooldev/php:8.4-debian${{ matrix.type }} composer1 -V
220+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep readline
221+ docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian${{ matrix.type }} php -m
222+
223+ - name : Tests (Debian) - Dockerize
224+ run : |
225+ docker run kooldev/php:8.4-debian${{ matrix.type }} dockerize --version
226+ # Test dockerize template rendering with bash
227+ docker run kooldev/php:8.4-debian${{ matrix.type }} bash -c 'echo "{{ .Env.TEST_VAR }}" > /tmp/test.tmpl && TEST_VAR=hello dockerize -template /tmp/test.tmpl:/tmp/test.out && cat /tmp/test.out | grep hello'
228+
229+ - name : Tests (Debian) - Gosu user switching
230+ run : |
231+ docker run kooldev/php:8.4-debian${{ matrix.type }} gosu --version
232+ # Verify gosu works for user switching
233+ docker run -e ASUSER=1000 kooldev/php:8.4-debian${{ matrix.type }} id | grep -E "uid=1000|uid=1337"
234+
235+ - name : Tests (Debian) - PHP Extensions
236+ run : |
237+ # Same extensions as Alpine for consistency
238+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i bcmath
239+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i gd
240+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i intl
241+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i pdo_mysql
242+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i pdo_pgsql
243+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i redis
244+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i zip
245+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i mbstring
246+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i ldap
247+
248+ - name : Tests (Debian) - Production Checks
249+ if : matrix.type == '-prod'
250+ run : |
251+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i "Zend OPcache"
252+ docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i xdebug && exit 1 || echo "OK: xdebug not in prod"
253+
254+ - name : Tests (Debian) - Development Checks
255+ if : matrix.type == ''
256+ run : |
257+ docker run kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i pcov
258+ docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian${{ matrix.type }} php -m | grep -i xdebug
259+
260+ - name : Build and push (Debian)
261+ uses : docker/build-push-action@v6
262+ if : github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php'
263+ with :
264+ context : 8.4-debian${{ matrix.type }}
265+ platforms : linux/amd64,linux/arm64
266+ push : true
267+ tags : kooldev/php:8.4-debian${{ matrix.type }}
268+
269+ - name : Build and export to Docker (Debian nginx)
270+ uses : docker/build-push-action@v6
271+ with :
272+ context : 8.4-debian-nginx${{ matrix.type }}
273+ load : true
274+ tags : kooldev/php:8.4-debian-nginx${{ matrix.type }}
275+
276+ - name : Tests (Debian nginx) - Basic
277+ run : |
278+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -v
279+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} composer -V
280+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} composer1 -V
281+ docker run -e ASUSER=1000 kooldev/php:8.4-debian-nginx${{ matrix.type }} php -v
282+ docker run -e ASUSER=1000 kooldev/php:8.4-debian-nginx${{ matrix.type }} composer -V
283+ docker run -e ASUSER=1000 kooldev/php:8.4-debian-nginx${{ matrix.type }} composer1 -V
284+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep readline
285+ docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m
286+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} nginx -v
287+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} nginx -T
288+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} supervisord version
289+
290+ - name : Tests (Debian nginx) - Dockerize
291+ run : |
292+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} dockerize --version
293+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} bash -c 'echo "{{ .Env.TEST_VAR }}" > /tmp/test.tmpl && TEST_VAR=hello dockerize -template /tmp/test.tmpl:/tmp/test.out && cat /tmp/test.out | grep hello'
294+
295+ - name : Tests (Debian nginx) - PHP Extensions
296+ run : |
297+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i bcmath
298+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i gd
299+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i intl
300+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i pdo_mysql
301+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i pdo_pgsql
302+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i redis
303+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i zip
304+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i mbstring
305+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i ldap
306+
307+ - name : Tests (Debian nginx) - Production Checks
308+ if : matrix.type == '-prod'
309+ run : |
310+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i "Zend OPcache"
311+ docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i xdebug && exit 1 || echo "OK: xdebug not in prod"
312+
313+ - name : Tests (Debian nginx) - Development Checks
314+ if : matrix.type == ''
315+ run : |
316+ docker run kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i pcov
317+ docker run -e ENABLE_XDEBUG=true kooldev/php:8.4-debian-nginx${{ matrix.type }} php -m | grep -i xdebug
318+
319+ - name : Build and push (Debian nginx)
320+ uses : docker/build-push-action@v6
321+ if : github.ref == 'refs/heads/master' && github.repository == 'kool-dev/docker-php'
322+ with :
323+ context : 8.4-debian-nginx${{ matrix.type }}
324+ platforms : linux/amd64,linux/arm64
325+ push : true
326+ tags : kooldev/php:8.4-debian-nginx${{ matrix.type }}
327+
119328 trigger-build-wordpress :
120329 name : Trigger Wordpress Build
121330 runs-on : ubuntu-latest
122- needs : build
331+ needs : [ build, build-debian]
123332 steps :
124333 - name : Trigger build on kool-dev/docker-wordpress
125334 uses : benc-uk/workflow-dispatch@v1.2
@@ -132,7 +341,7 @@ jobs:
132341 trigger-extended-builds :
133342 name : Trigger Extended Builds
134343 runs-on : ubuntu-latest
135- needs : build
344+ needs : [ build, build-debian]
136345 strategy :
137346 matrix :
138347 image :
0 commit comments