1
1
ARG DOCKER_HUB_PROXY=""
2
2
3
3
4
- FROM "${DOCKER_HUB_PROXY}python:3.12-slim-bookworm " AS php-base
4
+ FROM "${DOCKER_HUB_PROXY}ubuntu:24.04 " AS php-base
5
5
ENV DEBIAN_FRONTEND noninteractive
6
6
7
7
# Uncomment when building in corporate environments
@@ -19,29 +19,48 @@ FROM php-base AS composer-build
19
19
ENV COMPOSER_ALLOW_SUPERUSER 1
20
20
ARG CORE_TAG
21
21
ARG CORE_COMMIT
22
+ ARG TARGETPLATFORM
22
23
23
24
RUN apt-get install -y --no-install-recommends \
24
- php8.2 \
25
- php8.2 -apcu \
26
- php8.2 -curl \
27
- php8.2 -xml \
28
- php8.2 -intl \
29
- php8.2 -bcmath \
30
- php8.2 -mbstring \
31
- php8.2 -mysql \
32
- php8.2 -redis \
33
- php8.2 -gd \
34
- php8.2 -fpm \
35
- php8.2 -zip \
25
+ php8.3 \
26
+ php8.3 -apcu \
27
+ php8.3 -curl \
28
+ php8.3 -xml \
29
+ php8.3 -intl \
30
+ php8.3 -bcmath \
31
+ php8.3 -mbstring \
32
+ php8.3 -mysql \
33
+ php8.3 -redis \
34
+ php8.3 -gd \
35
+ php8.3 -fpm \
36
+ php8.3 -zip \
36
37
unzip \
37
38
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
38
39
39
40
WORKDIR /tmp
40
41
RUN curl -o /tmp/composer.json https://raw.githubusercontent.com/MISP/MISP/${CORE_COMMIT:-${CORE_TAG}}/app/composer.json
41
- COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
42
- RUN composer config --no-interaction allow-plugins.composer/installers true
43
- RUN composer install
44
- RUN composer require --with-all-dependencies --no-interaction \
42
+ COPY --from=composer:2.7.7 /usr/bin/composer /usr/bin/composer
43
+
44
+ # See:
45
+ # - https://github.com/curl/curl/issues/14154
46
+ # - https://bugs.launchpad.net/ubuntu/+source/curl/+bug/2073448
47
+ RUN <<-EOF
48
+ if [ "$TARGETPLATFORM" = "linux/arm64" ]; then
49
+ cp /usr/bin/composer /composer.phar
50
+ mkdir /out/
51
+ php -r '$phar = new Phar("/composer.phar"); $phar->extractTo("/out/");'
52
+ sed -i "/'verify_peer_name' =>.*/a 'verify_peer_status' => CURLOPT_SSL_VERIFYSTATUS," /out/src/Composer/Util/Http/CurlDownloader.php
53
+ sed -i "/\$ options = StreamContextFactory.*/a \$ options['ssl']['verify_peer'] = false;" /out/src/Composer/Util/Http/CurlDownloader.php
54
+ sed -i "/\$ options = StreamContextFactory.*/a \$ options['ssl']['verify_peer_name'] = false;" /out/src/Composer/Util/Http/CurlDownloader.php
55
+ sed -i "/\$ options = StreamContextFactory.*/a \$ options['ssl']['verify_peer_status'] = false;" /out/src/Composer/Util/Http/CurlDownloader.php
56
+ rm /usr/bin/composer
57
+ ln -s /out/bin/composer /usr/bin/composer
58
+ fi
59
+ EOF
60
+
61
+ RUN php /usr/bin/composer config --no-interaction allow-plugins.composer/installers true
62
+ RUN php /usr/bin/composer install
63
+ RUN php /usr/bin/composer require --with-all-dependencies --no-interaction \
45
64
elasticsearch/elasticsearch:^8.7.0 \
46
65
jakub-onderka/openid-connect-php:^1.0.0 \
47
66
aws/aws-sdk-php
@@ -56,9 +75,9 @@ FROM php-base AS php-build
56
75
g++ \
57
76
git \
58
77
make \
59
- php8.2 \
60
- php8.2 -dev \
61
- php8.2 -xml \
78
+ php8.3 \
79
+ php8.3 -dev \
80
+ php8.3 -xml \
62
81
php-pear \
63
82
libbrotli-dev \
64
83
libfuzzy-dev \
@@ -67,9 +86,9 @@ FROM php-base AS php-build
67
86
libzstd-dev \
68
87
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
69
88
70
- RUN update-alternatives --set php /usr/bin/php8.2
71
- RUN update-alternatives --set php-config /usr/bin/php-config8.2
72
- RUN update-alternatives --set phpize /usr/bin/phpize8.2
89
+ RUN update-alternatives --set php /usr/bin/php8.3
90
+ RUN update-alternatives --set php-config /usr/bin/php-config8.3
91
+ RUN update-alternatives --set phpize /usr/bin/phpize8.3
73
92
74
93
RUN cp "/usr/lib/$(gcc -dumpmachine)" /libfuzzy.* /usr/lib
75
94
RUN pecl channel-update pecl.php.net && \
@@ -99,6 +118,8 @@ FROM php-base AS python-build
99
118
100
119
RUN apt-get install -y --no-install-recommends \
101
120
git \
121
+ python3-pip \
122
+ python3-wheel \
102
123
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
103
124
104
125
# Download MISP using git in the /var/www/ directory. Remove unnecessary items.
@@ -180,25 +201,29 @@ FROM php-base
180
201
rsync \
181
202
# Include rsyslog to support syslogger
182
203
rsyslog \
204
+ # Include python management packages
205
+ python3-setuptools \
206
+ python3-pip \
207
+ python3-wheel \
183
208
# PHP Requirements
184
- php8.2 \
185
- php8.2 -apcu \
186
- php8.2 -curl \
187
- php8.2 -xml \
188
- php8.2 -intl \
189
- php8.2 -bcmath \
190
- php8.2 -mbstring \
191
- php8.2 -mysql \
192
- php8.2 -redis \
193
- php8.2 -gd \
194
- php8.2 -fpm \
195
- php8.2 -zip \
196
- php8.2 -ldap \
209
+ php8.3 \
210
+ php8.3 -apcu \
211
+ php8.3 -curl \
212
+ php8.3 -xml \
213
+ php8.3 -intl \
214
+ php8.3 -bcmath \
215
+ php8.3 -mbstring \
216
+ php8.3 -mysql \
217
+ php8.3 -redis \
218
+ php8.3 -gd \
219
+ php8.3 -fpm \
220
+ php8.3 -zip \
221
+ php8.3 -ldap \
197
222
libmagic1 \
198
223
libldap-common \
199
224
librdkafka1 \
200
225
libbrotli1 \
201
- libsimdjson14 \
226
+ libsimdjson19 \
202
227
libzstd1 \
203
228
ssdeep \
204
229
libfuzzy2 \
@@ -208,11 +233,11 @@ FROM php-base
208
233
curl jq \
209
234
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
210
235
211
- RUN update-alternatives --set php /usr/bin/php8.2
236
+ RUN update-alternatives --set php /usr/bin/php8.3
212
237
213
238
# Install python modules
214
239
COPY --from=python-build /wheels /wheels
215
- RUN pip install --no-cache-dir /wheels/*.whl && rm -rf /wheels
240
+ RUN pip install --break-system-packages -- no-cache-dir /wheels/*.whl && rm -rf /wheels
216
241
217
242
# PHP: install prebuilt libraries, then install the app's PHP deps
218
243
COPY --from=php-build ["/usr/lib/php/${PHP_VER}/ssdeep.so" , "/usr/lib/php/${PHP_VER}/rdkafka.so" , "/usr/lib/php/${PHP_VER}/brotli.so" , "/usr/lib/php/${PHP_VER}/simdjson.so" , "/usr/lib/php/${PHP_VER}/zstd.so" , "/usr/lib/php/${PHP_VER}/" ]
@@ -224,12 +249,11 @@ FROM php-base
224
249
COPY --from=composer-build --chown=www-data:www-data --chmod=0550 /tmp/Plugin /var/www/MISP/app/Plugin
225
250
226
251
# 'setuptools' is needed at runtime by 'mixbox'
227
- RUN pip install setuptools
228
- RUN cp /usr/local/lib/python3.12/site-packages/setuptools/_distutils/version.py \
229
- /usr/local/lib/python3.12/site-packages/mixbox/distutils_version.py
252
+ RUN cp /usr/local/lib/python3.12/dist-packages/setuptools/_distutils/version.py \
253
+ /usr/local/lib/python3.12/dist-packages/mixbox/distutils_version.py
230
254
RUN sed -i 's/from distutils\. version/from mixbox.distutils_version/' \
231
- /usr/local/lib/python3.12/site -packages/mixbox/parser.py
232
- RUN pip uninstall -y setuptools pip
255
+ /usr/local/lib/python3.12/dist -packages/mixbox/parser.py
256
+ RUN apt-get remove --purge python3-pip python3-wheel python3- setuptools -y
233
257
234
258
# Gather these in one layer, only act on actual directories under /etc/php/
235
259
RUN <<-EOF
0 commit comments