11ARG DOCKER_HUB_PROXY=""
22
33
4- FROM "${DOCKER_HUB_PROXY}python:3.12-slim-bookworm " AS php-base
4+ FROM "${DOCKER_HUB_PROXY}ubuntu:24.04 " AS php-base
55 ENV DEBIAN_FRONTEND noninteractive
66
77 # Uncomment when building in corporate environments
@@ -19,29 +19,48 @@ FROM php-base AS composer-build
1919 ENV COMPOSER_ALLOW_SUPERUSER 1
2020 ARG CORE_TAG
2121 ARG CORE_COMMIT
22+ ARG TARGETPLATFORM
2223
2324 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 \
3637 unzip \
3738 && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
3839
3940 WORKDIR /tmp
4041 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 \
4564 elasticsearch/elasticsearch:^8.7.0 \
4665 jakub-onderka/openid-connect-php:^1.0.0 \
4766 aws/aws-sdk-php
@@ -56,9 +75,9 @@ FROM php-base AS php-build
5675 g++ \
5776 git \
5877 make \
59- php8.2 \
60- php8.2 -dev \
61- php8.2 -xml \
78+ php8.3 \
79+ php8.3 -dev \
80+ php8.3 -xml \
6281 php-pear \
6382 libbrotli-dev \
6483 libfuzzy-dev \
@@ -67,9 +86,9 @@ FROM php-base AS php-build
6786 libzstd-dev \
6887 && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
6988
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
7392
7493 RUN cp "/usr/lib/$(gcc -dumpmachine)" /libfuzzy.* /usr/lib
7594 RUN pecl channel-update pecl.php.net && \
@@ -99,6 +118,8 @@ FROM php-base AS python-build
99118
100119 RUN apt-get install -y --no-install-recommends \
101120 git \
121+ python3-pip \
122+ python3-wheel \
102123 && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
103124
104125 # Download MISP using git in the /var/www/ directory. Remove unnecessary items.
@@ -180,25 +201,29 @@ FROM php-base
180201 rsync \
181202 # Include rsyslog to support syslogger
182203 rsyslog \
204+ # Include python management packages
205+ python3-setuptools \
206+ python3-pip \
207+ python3-wheel \
183208 # 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 \
197222 libmagic1 \
198223 libldap-common \
199224 librdkafka1 \
200225 libbrotli1 \
201- libsimdjson14 \
226+ libsimdjson19 \
202227 libzstd1 \
203228 ssdeep \
204229 libfuzzy2 \
@@ -208,11 +233,11 @@ FROM php-base
208233 curl jq \
209234 && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
210235
211- RUN update-alternatives --set php /usr/bin/php8.2
236+ RUN update-alternatives --set php /usr/bin/php8.3
212237
213238 # Install python modules
214239 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
216241
217242 # PHP: install prebuilt libraries, then install the app's PHP deps
218243 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
224249 COPY --from=composer-build --chown=www-data:www-data --chmod=0550 /tmp/Plugin /var/www/MISP/app/Plugin
225250
226251 # '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
230254 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
233257
234258 # Gather these in one layer, only act on actual directories under /etc/php/
235259 RUN <<-EOF
0 commit comments