-
Notifications
You must be signed in to change notification settings - Fork 55
Expand file tree
/
Copy pathDockerfile
More file actions
executable file
·136 lines (111 loc) · 4.39 KB
/
Dockerfile
File metadata and controls
executable file
·136 lines (111 loc) · 4.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
FROM composer:2.8 AS composer
WORKDIR /usr/local/src/
COPY database/composer.lock /usr/local/src/
COPY database/composer.json /usr/local/src/
# Copy local query lib dependency (referenced as ../query in composer.json)
COPY query /usr/local/query
# Rewrite path repository to use copied location
RUN sed -i 's|"url": "../query"|"url": "/usr/local/query"|' /usr/local/src/composer.json \
&& sed -i 's|"symlink": true|"symlink": false|' /usr/local/src/composer.json
RUN COMPOSER_MIRROR_PATH_REPOS=1 composer install \
--ignore-platform-reqs \
--optimize-autoloader \
--no-plugins \
--no-scripts \
--prefer-dist
# Replace symlink with actual copy (composer path repos may still symlink)
RUN if [ -L /usr/local/src/vendor/utopia-php/query ]; then \
rm /usr/local/src/vendor/utopia-php/query && \
cp -r /usr/local/query /usr/local/src/vendor/utopia-php/query; \
fi
FROM php:8.4.18-cli-alpine3.22 AS compile
ENV PHP_REDIS_VERSION="6.3.0" \
PHP_SWOOLE_VERSION="v6.1.6" \
PHP_XDEBUG_VERSION="3.4.2" \
PHP_MONGODB_VERSION="2.1.1"
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apk update && apk add --no-cache \
libpq \
libpq-dev \
make \
automake \
autoconf \
gcc \
g++ \
git \
brotli-dev \
linux-headers \
docker-cli \
docker-cli-compose \
&& (pecl install mongodb-$PHP_MONGODB_VERSION \
|| (git clone --depth 1 --branch $PHP_MONGODB_VERSION --recurse-submodules https://github.com/mongodb/mongo-php-driver.git /tmp/mongodb \
&& cd /tmp/mongodb \
&& git submodule update --init --recursive \
&& phpize \
&& ./configure \
&& make \
&& make install \
&& cd / \
&& rm -rf /tmp/mongodb)) \
&& docker-php-ext-enable mongodb \
&& docker-php-ext-install opcache pgsql pdo_mysql pdo_pgsql \
&& apk del libpq-dev \
&& rm -rf /var/cache/apk/*
# Redis Extension
FROM compile AS redis
RUN \
git clone --depth 1 --branch $PHP_REDIS_VERSION https://github.com/phpredis/phpredis.git \
&& cd phpredis \
&& phpize \
&& ./configure \
&& make && make install
## Swoole Extension
FROM compile AS swoole
RUN \
git clone --depth 1 --branch $PHP_SWOOLE_VERSION https://github.com/swoole/swoole-src.git \
&& cd swoole-src \
&& phpize \
&& ./configure --enable-http2 \
&& make && make install
## PCOV Extension
FROM compile AS pcov
RUN \
git clone --depth 1 https://github.com/krakjoe/pcov.git \
&& cd pcov \
&& phpize \
&& ./configure --enable-pcov \
&& make && make install
## XDebug Extension
FROM compile AS xdebug
RUN \
git clone --depth 1 --branch $PHP_XDEBUG_VERSION https://github.com/xdebug/xdebug && \
cd xdebug && \
phpize && \
./configure && \
make && make install
FROM compile AS final
LABEL maintainer="team@appwrite.io"
ARG DEBUG=false
ENV DEBUG=$DEBUG
WORKDIR /usr/src/code
RUN echo extension=redis.so >> /usr/local/etc/php/conf.d/redis.ini
RUN echo extension=swoole.so >> /usr/local/etc/php/conf.d/swoole.ini
RUN echo extension=pcov.so >> /usr/local/etc/php/conf.d/pcov.ini
RUN echo extension=xdebug.so >> /usr/local/etc/php/conf.d/xdebug.ini
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
RUN echo "opcache.enable_cli=1" >> $PHP_INI_DIR/php.ini
RUN echo "memory_limit=1024M" >> $PHP_INI_DIR/php.ini
COPY --from=composer /usr/local/src/vendor /usr/src/code/vendor
COPY --from=swoole /usr/local/lib/php/extensions/no-debug-non-zts-20240924/swoole.so /usr/local/lib/php/extensions/no-debug-non-zts-20240924/
COPY --from=redis /usr/local/lib/php/extensions/no-debug-non-zts-20240924/redis.so /usr/local/lib/php/extensions/no-debug-non-zts-20240924/
COPY --from=pcov /usr/local/lib/php/extensions/no-debug-non-zts-20240924/pcov.so /usr/local/lib/php/extensions/no-debug-non-zts-20240924/
COPY --from=xdebug /usr/local/lib/php/extensions/no-debug-non-zts-20240924/xdebug.so /usr/local/lib/php/extensions/no-debug-non-zts-20240924/
COPY database/bin /usr/src/code/bin
COPY database/src /usr/src/code/src
COPY database/dev /usr/src/code/dev
# Add Debug Configs
RUN if [ "$DEBUG" = "true" ]; then cp /usr/src/code/dev/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini; fi
RUN if [ "$DEBUG" = "true" ]; then mkdir -p /tmp/xdebug; fi
RUN if [ "$DEBUG" = "false" ]; then rm -rf /usr/src/code/dev; fi
RUN if [ "$DEBUG" = "false" ]; then rm -f /usr/local/lib/php/extensions/no-debug-non-zts-20240924/xdebug.so; fi
CMD [ "tail", "-f", "/dev/null" ]