Skip to content

Commit 7da7be2

Browse files
authored
Merge pull request #36 from appwrite/extensions
feat: cloud extensions
2 parents 91575f9 + 08ae789 commit 7da7be2

File tree

2 files changed

+71
-125
lines changed

2 files changed

+71
-125
lines changed

Dockerfile

+20-11
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ ENV PHP_REDIS_VERSION="6.1.0" \
1313
PHP_BROTLI_VERSION="0.15.0" \
1414
PHP_SNAPPY_VERSION="c27f830dcfe6c41eb2619a374de10fd0597f4939" \
1515
PHP_LZ4_VERSION="2f006c3e4f1fb3a60d2656fc164f9ba26b71e995" \
16-
PHP_XDEBUG_VERSION="3.3.2"
16+
PHP_XDEBUG_VERSION="3.3.2" \
17+
PHP_OPENTELEMETRY_VERSION="1.1.0" \
18+
PHP_PROTOBUF_VERSION="4.28.3"
1719

1820
RUN \
1921
apk add --no-cache --virtual .deps \
@@ -31,6 +33,8 @@ RUN \
3133
imagemagick-dev \
3234
libjpeg-turbo-dev \
3335
jpeg-dev \
36+
zlib-dev \
37+
libpng-dev \
3438
libjxl-dev \
3539
libmaxminddb-dev \
3640
zstd-dev \
@@ -151,6 +155,15 @@ RUN \
151155
./configure && \
152156
make && make install
153157

158+
FROM compile AS opentelemetry
159+
RUN pecl install opentelemetry-${PHP_OPENTELEMETRY_VERSION}
160+
161+
FROM compile AS protobuf
162+
RUN pecl install protobuf-${PHP_PROTOBUF_VERSION}
163+
164+
FROM compile AS gd
165+
RUN docker-php-ext-install gd
166+
154167
FROM $BASEIMAGE as final
155168

156169
LABEL maintainer="[email protected]"
@@ -188,6 +201,8 @@ RUN \
188201
libavif \
189202
libheif \
190203
imagemagick-heic \
204+
zlib-dev \
205+
libpng-dev \
191206
libmaxminddb-dev \
192207
certbot \
193208
docker-cli \
@@ -217,18 +232,12 @@ COPY --from=brotli /usr/local/lib/php/extensions/no-debug-non-zts-20230831/brotl
217232
COPY --from=lz4 /usr/local/lib/php/extensions/no-debug-non-zts-20230831/lz4.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/
218233
COPY --from=snappy /usr/local/lib/php/extensions/no-debug-non-zts-20230831/snappy.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/
219234
COPY --from=xdebug /usr/local/lib/php/extensions/no-debug-non-zts-20230831/xdebug.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/
235+
COPY --from=opentelemetry /usr/local/lib/php/extensions/no-debug-non-zts-20230831/opentelemetry.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/
236+
COPY --from=protobuf /usr/local/lib/php/extensions/no-debug-non-zts-20230831/protobuf.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/
237+
COPY --from=gd /usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/
220238

221239
# Enable Extensions
222-
RUN echo extension=swoole.so >> /usr/local/etc/php/conf.d/swoole.ini
223-
RUN echo extension=redis.so >> /usr/local/etc/php/conf.d/redis.ini
224-
RUN echo extension=imagick.so >> /usr/local/etc/php/conf.d/imagick.ini
225-
RUN echo extension=yaml.so >> /usr/local/etc/php/conf.d/yaml.ini
226-
RUN echo extension=maxminddb.so >> /usr/local/etc/php/conf.d/maxminddb.ini
227-
RUN echo extension=scrypt.so >> /usr/local/etc/php/conf.d/scrypt.ini
228-
RUN echo extension=zstd.so >> /usr/local/etc/php/conf.d/zstd.ini
229-
RUN echo extension=brotli.so >> /usr/local/etc/php/conf.d/brotli.ini
230-
RUN echo extension=lz4.so >> /usr/local/etc/php/conf.d/lz4.ini
231-
RUN echo extension=snappy.so >> /usr/local/etc/php/conf.d/snappy.ini
240+
RUN docker-php-ext-enable swoole redis imagick yaml maxminddb scrypt zstd brotli lz4 snappy opentelemetry protobuf gd
232241

233242
EXPOSE 80
234243

tests.yaml

+51-114
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,4 @@
11
schemaVersion: '2.0.0'
2-
3-
fileExistenceTests:
4-
## Extension files
5-
- name: 'Check swoole extension'
6-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/swoole.so
7-
shouldExist: true
8-
- name: 'Check redis extension'
9-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/redis.so
10-
shouldExist: true
11-
- name: 'Check imagick extension'
12-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/imagick.so
13-
shouldExist: true
14-
- name: 'Check yaml extension'
15-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/yaml.so
16-
shouldExist: true
17-
- name: 'Check maxminddb extension'
18-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/maxminddb.so
19-
shouldExist: true
20-
- name: 'Check mongodb extension'
21-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/mongodb.so
22-
shouldExist: true
23-
- name: 'Check scrypt extension'
24-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/scrypt.so
25-
shouldExist: true
26-
- name: 'Check zstd extension'
27-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/zstd.so
28-
shouldExist: true
29-
- name: 'Check brotli extension'
30-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/brotli.so
31-
shouldExist: true
32-
- name: 'Check lz4 extension'
33-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/lz4.so
34-
shouldExist: true
35-
- name: 'Check snappy extension'
36-
path: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/snappy.so
37-
shouldExist: true
38-
39-
## ini files
40-
- name: 'Check swoole ini'
41-
path: /usr/local/etc/php/conf.d/swoole.ini
42-
shouldExist: true
43-
- name: 'Check redis ini'
44-
path: /usr/local/etc/php/conf.d/redis.ini
45-
shouldExist: true
46-
- name: 'Check imagick ini'
47-
path: /usr/local/etc/php/conf.d/imagick.ini
48-
shouldExist: true
49-
- name: 'Check yaml ini'
50-
path: /usr/local/etc/php/conf.d/yaml.ini
51-
shouldExist: true
52-
- name: 'Check maxminddb ini'
53-
path: /usr/local/etc/php/conf.d/maxminddb.ini
54-
shouldExist: true
55-
- name: 'Check scrypt ini'
56-
path: /usr/local/etc/php/conf.d/scrypt.ini
57-
shouldExist: true
58-
- name: 'Check zstd ini'
59-
path: /usr/local/etc/php/conf.d/zstd.ini
60-
shouldExist: true
61-
- name: 'Check brotli ini'
62-
path: /usr/local/etc/php/conf.d/brotli.ini
63-
shouldExist: true
64-
- name: 'Check lz4 ini'
65-
path: /usr/local/etc/php/conf.d/lz4.ini
66-
shouldExist: true
67-
- name: 'Check snappy ini'
68-
path: /usr/local/etc/php/conf.d/snappy.ini
69-
shouldExist: true
70-
71-
fileContentTests:
72-
- name: 'swoole ini'
73-
path: '/usr/local/etc/php/conf.d/swoole.ini'
74-
expectedContents: ['extension=swoole.so']
75-
- name: 'redis ini'
76-
path: '/usr/local/etc/php/conf.d/redis.ini'
77-
expectedContents: ['extension=redis.so']
78-
- name: 'imagick ini'
79-
path: '/usr/local/etc/php/conf.d/imagick.ini'
80-
expectedContents: ['extension=imagick.so']
81-
- name: 'yaml ini'
82-
path: '/usr/local/etc/php/conf.d/yaml.ini'
83-
expectedContents: ['extension=yaml.so']
84-
- name: 'maxminddb ini'
85-
path: '/usr/local/etc/php/conf.d/maxminddb.ini'
86-
expectedContents: ['extension=maxminddb.so']
87-
- name: 'scrypt ini'
88-
path: '/usr/local/etc/php/conf.d/scrypt.ini'
89-
expectedContents: ['extension=scrypt.so']
90-
- name: 'zstd ini'
91-
path: '/usr/local/etc/php/conf.d/zstd.ini'
92-
expectedContents: ['extension=zstd.so']
93-
- name: 'brotli ini'
94-
path: '/usr/local/etc/php/conf.d/brotli.ini'
95-
expectedContents: ['extension=brotli.so']
96-
- name: 'lz4 ini'
97-
path: '/usr/local/etc/php/conf.d/lz4.ini'
98-
expectedContents: ['extension=lz4.so']
99-
- name: 'snappy ini'
100-
path: '/usr/local/etc/php/conf.d/snappy.ini'
101-
expectedContents: ['extension=snappy.so']
1022

1033
commandTests:
1044
- name: 'Imagemagick command'
@@ -121,21 +21,58 @@ commandTests:
12121
command: "php"
12222
args: ["-m"]
12323
expectedOutput:
124-
- ".*imagick.*"
125-
- ".*maxminddb.*"
126-
- ".*swoole.*"
127-
- ".*redis.*"
128-
- ".*yaml.*"
129-
- ".*scrypt.*"
130-
- ".*curl.*"
131-
- ".*PDO.*"
132-
- ".*pdo_mysql.*"
133-
- ".*zstd.*"
134-
- ".*brotli.*"
135-
- ".*lz4.*"
136-
- ".*snappy.*"
24+
- brotli
25+
- Core
26+
- ctype
27+
- curl
28+
- date
29+
- dom
30+
- fileinfo
31+
- filter
32+
- gd
33+
- hash
34+
- iconv
35+
- imagick
36+
- intl
37+
- json
38+
- libxml
39+
- lz4
40+
- maxminddb
41+
- mbstring
42+
- mysqlnd
43+
- openssl
44+
- opentelemetry
45+
- pcre
46+
- PDO
47+
- pdo_mysql
48+
- pdo_pgsql
49+
- pdo_sqlite
50+
- Phar
51+
- posix
52+
- protobuf
53+
- random
54+
- readline
55+
- redis
56+
- Reflection
57+
- scrypt
58+
- session
59+
- SimpleXML
60+
- snappy
61+
- sockets
62+
- sodium
63+
- SPL
64+
- sqlite3
65+
- standard
66+
- swoole
67+
- tokenizer
68+
- xml
69+
- xmlreader
70+
- xmlwriter
71+
- yaml
72+
- zlib
73+
- zstd
13774
- name: 'PHP intl'
13875
command: "php"
13976
args: ["-r", 'print(\Normalizer::FORM_D);']
14077
expectedOutput:
141-
- "4"
78+
- "4"

0 commit comments

Comments
 (0)