Skip to content

Commit a63d0fb

Browse files
Enhancement: Add php 8.5.3 variants
Signed-off-by: The Oh Brothers Bot <bot@theohbrothers.com>
1 parent d0726c2 commit a63d0fb

File tree

6 files changed

+400
-2
lines changed

6 files changed

+400
-2
lines changed

.github/workflows/ci-master-pr.yml

Lines changed: 257 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,260 @@ jobs:
3333
run: |
3434
git diff --exit-code
3535
36+
build-8-5-3:
37+
runs-on: ubuntu-latest
38+
steps:
39+
- name: Checkout
40+
uses: actions/checkout@v4
41+
42+
- name: Display system info (linux)
43+
run: |
44+
set -e
45+
hostname
46+
whoami
47+
cat /etc/*release
48+
lscpu
49+
free
50+
df -h
51+
pwd
52+
docker info
53+
docker version
54+
55+
# See: https://github.com/docker/build-push-action/blob/v2.6.1/docs/advanced/cache.md#github-cache
56+
- name: Set up QEMU
57+
uses: docker/setup-qemu-action@v3
58+
59+
- name: Set up Docker Buildx
60+
id: buildx
61+
uses: docker/setup-buildx-action@v3
62+
63+
- name: Cache Docker layers
64+
uses: actions/cache@v4
65+
with:
66+
path: /tmp/.buildx-cache
67+
key: ${{ runner.os }}-buildx-8.5.3-${{ github.sha }}
68+
restore-keys: |
69+
${{ runner.os }}-buildx-8.5.3-
70+
${{ runner.os }}-buildx-
71+
72+
- name: Login to Docker Hub registry
73+
# Run on master and tags
74+
if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')
75+
uses: docker/login-action@v3
76+
with:
77+
username: ${{ secrets.DOCKERHUB_REGISTRY_USER }}
78+
password: ${{ secrets.DOCKERHUB_REGISTRY_PASSWORD }}
79+
80+
# This step generates the docker tags
81+
- name: Prepare
82+
id: prep-8-5-3-fpm-alpine
83+
run: |
84+
set -e
85+
86+
# Get ref, i.e. <branch_name> from refs/heads/<branch_name>, or <tag-name> from refs/tags/<tag_name>. E.g. 'master' or 'v0.0.0'
87+
REF=$( echo "${GITHUB_REF}" | rev | cut -d '/' -f 1 | rev )
88+
89+
# Get short commit hash E.g. 'abc0123'
90+
SHA=$( echo "${GITHUB_SHA}" | cut -c1-7 )
91+
92+
# Generate docker image tags
93+
# E.g. 'v0.0.0-<variant>' and 'v0.0.0-abc0123-<variant>'
94+
# E.g. 'master-<variant>' and 'master-abc0123-<variant>'
95+
VARIANT="8.5.3-fpm-alpine"
96+
REF_VARIANT="${REF}-${VARIANT}"
97+
REF_SHA_VARIANT="${REF}-${SHA}-${VARIANT}"
98+
99+
# Pass variables to next step
100+
echo "VARIANT_BUILD_DIR=$VARIANT_BUILD_DIR" >> $GITHUB_OUTPUT
101+
echo "VARIANT=$VARIANT" >> $GITHUB_OUTPUT
102+
echo "REF_VARIANT=$REF_VARIANT" >> $GITHUB_OUTPUT
103+
echo "REF_SHA_VARIANT=$REF_SHA_VARIANT" >> $GITHUB_OUTPUT
104+
105+
- name: 8.5.3-fpm-alpine - Build (PRs)
106+
# Run only on pull requests
107+
if: github.event_name == 'pull_request'
108+
uses: docker/build-push-action@v5
109+
with:
110+
context: variants/8.5.3-fpm-alpine
111+
platforms:
112+
push: false
113+
tags: |
114+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine.outputs.REF_VARIANT }}
115+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine.outputs.REF_SHA_VARIANT }}
116+
cache-from: type=local,src=/tmp/.buildx-cache
117+
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
118+
119+
- name: 8.5.3-fpm-alpine - Build and push (master)
120+
# Run only on master
121+
if: github.ref == 'refs/heads/master'
122+
uses: docker/build-push-action@v5
123+
with:
124+
context: variants/8.5.3-fpm-alpine
125+
platforms:
126+
push: true
127+
tags: |
128+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine.outputs.REF_VARIANT }}
129+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine.outputs.REF_SHA_VARIANT }}
130+
cache-from: type=local,src=/tmp/.buildx-cache
131+
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
132+
133+
- name: 8.5.3-fpm-alpine - Build and push (release)
134+
if: startsWith(github.ref, 'refs/tags/')
135+
uses: docker/build-push-action@v5
136+
with:
137+
context: variants/8.5.3-fpm-alpine
138+
platforms:
139+
push: true
140+
tags: |
141+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine.outputs.VARIANT }}
142+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine.outputs.REF_VARIANT }}
143+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine.outputs.REF_SHA_VARIANT }}
144+
${{ github.repository }}:latest
145+
cache-from: type=local,src=/tmp/.buildx-cache
146+
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
147+
148+
# This step generates the docker tags
149+
- name: Prepare
150+
id: prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets
151+
run: |
152+
set -e
153+
154+
# Get ref, i.e. <branch_name> from refs/heads/<branch_name>, or <tag-name> from refs/tags/<tag_name>. E.g. 'master' or 'v0.0.0'
155+
REF=$( echo "${GITHUB_REF}" | rev | cut -d '/' -f 1 | rev )
156+
157+
# Get short commit hash E.g. 'abc0123'
158+
SHA=$( echo "${GITHUB_SHA}" | cut -c1-7 )
159+
160+
# Generate docker image tags
161+
# E.g. 'v0.0.0-<variant>' and 'v0.0.0-abc0123-<variant>'
162+
# E.g. 'master-<variant>' and 'master-abc0123-<variant>'
163+
VARIANT="8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets"
164+
REF_VARIANT="${REF}-${VARIANT}"
165+
REF_SHA_VARIANT="${REF}-${SHA}-${VARIANT}"
166+
167+
# Pass variables to next step
168+
echo "VARIANT_BUILD_DIR=$VARIANT_BUILD_DIR" >> $GITHUB_OUTPUT
169+
echo "VARIANT=$VARIANT" >> $GITHUB_OUTPUT
170+
echo "REF_VARIANT=$REF_VARIANT" >> $GITHUB_OUTPUT
171+
echo "REF_SHA_VARIANT=$REF_SHA_VARIANT" >> $GITHUB_OUTPUT
172+
173+
- name: 8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets - Build (PRs)
174+
# Run only on pull requests
175+
if: github.event_name == 'pull_request'
176+
uses: docker/build-push-action@v5
177+
with:
178+
context: variants/8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets
179+
platforms:
180+
push: false
181+
tags: |
182+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets.outputs.REF_VARIANT }}
183+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets.outputs.REF_SHA_VARIANT }}
184+
cache-from: type=local,src=/tmp/.buildx-cache
185+
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
186+
187+
- name: 8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets - Build and push (master)
188+
# Run only on master
189+
if: github.ref == 'refs/heads/master'
190+
uses: docker/build-push-action@v5
191+
with:
192+
context: variants/8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets
193+
platforms:
194+
push: true
195+
tags: |
196+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets.outputs.REF_VARIANT }}
197+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets.outputs.REF_SHA_VARIANT }}
198+
cache-from: type=local,src=/tmp/.buildx-cache
199+
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
200+
201+
- name: 8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets - Build and push (release)
202+
if: startsWith(github.ref, 'refs/tags/')
203+
uses: docker/build-push-action@v5
204+
with:
205+
context: variants/8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets
206+
platforms:
207+
push: true
208+
tags: |
209+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets.outputs.VARIANT }}
210+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets.outputs.REF_VARIANT }}
211+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets.outputs.REF_SHA_VARIANT }}
212+
cache-from: type=local,src=/tmp/.buildx-cache
213+
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
214+
215+
# This step generates the docker tags
216+
- name: Prepare
217+
id: prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug
218+
run: |
219+
set -e
220+
221+
# Get ref, i.e. <branch_name> from refs/heads/<branch_name>, or <tag-name> from refs/tags/<tag_name>. E.g. 'master' or 'v0.0.0'
222+
REF=$( echo "${GITHUB_REF}" | rev | cut -d '/' -f 1 | rev )
223+
224+
# Get short commit hash E.g. 'abc0123'
225+
SHA=$( echo "${GITHUB_SHA}" | cut -c1-7 )
226+
227+
# Generate docker image tags
228+
# E.g. 'v0.0.0-<variant>' and 'v0.0.0-abc0123-<variant>'
229+
# E.g. 'master-<variant>' and 'master-abc0123-<variant>'
230+
VARIANT="8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug"
231+
REF_VARIANT="${REF}-${VARIANT}"
232+
REF_SHA_VARIANT="${REF}-${SHA}-${VARIANT}"
233+
234+
# Pass variables to next step
235+
echo "VARIANT_BUILD_DIR=$VARIANT_BUILD_DIR" >> $GITHUB_OUTPUT
236+
echo "VARIANT=$VARIANT" >> $GITHUB_OUTPUT
237+
echo "REF_VARIANT=$REF_VARIANT" >> $GITHUB_OUTPUT
238+
echo "REF_SHA_VARIANT=$REF_SHA_VARIANT" >> $GITHUB_OUTPUT
239+
240+
- name: 8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug - Build (PRs)
241+
# Run only on pull requests
242+
if: github.event_name == 'pull_request'
243+
uses: docker/build-push-action@v5
244+
with:
245+
context: variants/8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug
246+
platforms:
247+
push: false
248+
tags: |
249+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug.outputs.REF_VARIANT }}
250+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug.outputs.REF_SHA_VARIANT }}
251+
cache-from: type=local,src=/tmp/.buildx-cache
252+
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
253+
254+
- name: 8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug - Build and push (master)
255+
# Run only on master
256+
if: github.ref == 'refs/heads/master'
257+
uses: docker/build-push-action@v5
258+
with:
259+
context: variants/8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug
260+
platforms:
261+
push: true
262+
tags: |
263+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug.outputs.REF_VARIANT }}
264+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug.outputs.REF_SHA_VARIANT }}
265+
cache-from: type=local,src=/tmp/.buildx-cache
266+
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
267+
268+
- name: 8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug - Build and push (release)
269+
if: startsWith(github.ref, 'refs/tags/')
270+
uses: docker/build-push-action@v5
271+
with:
272+
context: variants/8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug
273+
platforms:
274+
push: true
275+
tags: |
276+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug.outputs.VARIANT }}
277+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug.outputs.REF_VARIANT }}
278+
${{ github.repository }}:${{ steps.prep-8-5-3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug.outputs.REF_SHA_VARIANT }}
279+
cache-from: type=local,src=/tmp/.buildx-cache
280+
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
281+
282+
# Temp fix
283+
# https://github.com/docker/build-push-action/issues/252
284+
# https://github.com/moby/buildkit/issues/1896
285+
- name: Move cache
286+
run: |
287+
rm -rf /tmp/.buildx-cache
288+
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
289+
36290
build-8-4-18:
37291
runs-on: ubuntu-latest
38292
steps:
@@ -141,7 +395,6 @@ jobs:
141395
${{ github.repository }}:${{ steps.prep-8-4-18-fpm-alpine.outputs.VARIANT }}
142396
${{ github.repository }}:${{ steps.prep-8-4-18-fpm-alpine.outputs.REF_VARIANT }}
143397
${{ github.repository }}:${{ steps.prep-8-4-18-fpm-alpine.outputs.REF_SHA_VARIANT }}
144-
${{ github.repository }}:latest
145398
cache-from: type=local,src=/tmp/.buildx-cache
146399
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
147400

@@ -2060,6 +2313,7 @@ jobs:
20602313
20612314
update-draft-release:
20622315
needs:
2316+
- build-8-5-3
20632317
- build-8-4-18
20642318
- build-8-3-30
20652319
- build-8-2-30
@@ -2081,6 +2335,7 @@ jobs:
20812335

20822336
publish-draft-release:
20832337
needs:
2338+
- build-8-5-3
20842339
- build-8-4-18
20852340
- build-8-3-30
20862341
- build-8-2-30
@@ -2104,6 +2359,7 @@ jobs:
21042359

21052360
update-dockerhub-description:
21062361
needs:
2362+
- build-8-5-3
21072363
- build-8-4-18
21082364
- build-8-3-30
21092365
- build-8-2-30

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ Dockerized php with php extension(s), based on [official php images](https://hub
1010

1111
| Tag | Dockerfile Build Context |
1212
|:-------:|:---------:|
13-
| `:8.4.18-fpm-alpine`, `:latest` | [View](variants/8.4.18-fpm-alpine) |
13+
| `:8.5.3-fpm-alpine`, `:latest` | [View](variants/8.5.3-fpm-alpine) |
14+
| `:8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets` | [View](variants/8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets) |
15+
| `:8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug` | [View](variants/8.5.3-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug) |
16+
| `:8.4.18-fpm-alpine` | [View](variants/8.4.18-fpm-alpine) |
1417
| `:8.4.18-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets` | [View](variants/8.4.18-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets) |
1518
| `:8.4.18-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug` | [View](variants/8.4.18-fpm-alpine-opcache-mysqli-gd-pdo-memcached-sockets-xdebug) |
1619
| `:8.3.30-fpm-alpine` | [View](variants/8.3.30-fpm-alpine) |

generate/definitions/versions.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"php": {
33
"versions": [
4+
"8.5.3",
45
"8.4.18",
56
"8.3.30",
67
"8.2.30",
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
FROM php:8.5.3-fpm-alpine
2+
3+
# opcache
4+
RUN set -eux; \
5+
docker-php-ext-install opcache
6+
7+
# mysqli (deprecated)
8+
RUN set -eux; \
9+
docker-php-ext-install mysqli
10+
11+
# gd
12+
RUN set -eux; \
13+
apk add --no-cache freetype libjpeg-turbo libpng; \
14+
apk add --no-cache --virtual .deps freetype-dev libjpeg-turbo-dev libpng-dev; \
15+
docker-php-ext-configure gd \
16+
--with-freetype=/usr/include/ \
17+
--with-jpeg=/usr/include/; \
18+
docker-php-ext-install gd; \
19+
docker-php-source delete; \
20+
apk del .deps
21+
22+
# PDO: mysql driver
23+
RUN set -eux; \
24+
docker-php-ext-install pdo pdo_mysql
25+
26+
# PDO: pgsql driver
27+
# See: https://github.com/docker-library/php/issues/221
28+
RUN set -eux; \
29+
apk add --no-cache postgresql-libs; \
30+
apk add --no-cache --virtual .deps postgresql-dev; \
31+
docker-php-ext-install pdo_pgsql; \
32+
apk del .deps
33+
34+
# memcached
35+
# See: https://stackoverflow.com/questions/40894385/how-can-i-install-the-php-memcached-extension-on-dockers-php7-alpine-image
36+
RUN set -eux; \
37+
apk add --no-cache libmemcached-libs zlib; \
38+
apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS; \
39+
apk add --no-cache --virtual .deps zlib-dev libmemcached-dev cyrus-sasl-dev; \
40+
pecl install memcached; \
41+
echo "extension=memcached.so" > /usr/local/etc/php/conf.d/20_memcached.ini; \
42+
docker-php-source delete; \
43+
apk del .deps; \
44+
apk del .phpize-deps;
45+
46+
# Sockets
47+
# See: https://github.com/docker-library/php/issues/181#issuecomment-173365852
48+
RUN set -eux; \
49+
apk add --no-cache --virtual .deps linux-headers; \
50+
docker-php-ext-install sockets; \
51+
apk del .deps
52+
53+
# Xdebug: https://stackoverflow.com/questions/46825502/how-do-i-install-xdebug-on-dockers-official-php-fpm-alpine-image
54+
# PHPIZE_DEPS: autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c
55+
RUN set -eux; \
56+
apk add --no-cache --virtual .build-dependencies $PHPIZE_DEPS; \
57+
apk add --no-cache --virtual .deps linux-headers; \
58+
pecl install xdebug-3.5.0; \
59+
docker-php-ext-enable xdebug; \
60+
docker-php-source delete; \
61+
apk del .deps; \
62+
apk del .build-dependencies
63+
RUN set -eux; \
64+
{ \
65+
echo "[xdebug]"; \
66+
echo "zend_extension=xdebug"; \
67+
echo "xdebug.mode=debug"; \
68+
echo "xdebug.start_with_request=yes"; \
69+
echo "xdebug.client_host=host.docker.internal"; \
70+
echo "xdebug.client_port=9000"; \
71+
} > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
72+
73+
RUN set -eux; \
74+
echo; \
75+
php -i; \
76+
php -m

0 commit comments

Comments
 (0)