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.
@@ -178,25 +199,28 @@ FROM php-base
178199 gpg-agent \
179200 mariadb-client \
180201 rsync \
202+ python3-setuptools \
203+ python3-pip \
204+ python3-wheel \
181205 # PHP Requirements
182- php8.2 \
183- php8.2 -apcu \
184- php8.2 -curl \
185- php8.2 -xml \
186- php8.2 -intl \
187- php8.2 -bcmath \
188- php8.2 -mbstring \
189- php8.2 -mysql \
190- php8.2 -redis \
191- php8.2 -gd \
192- php8.2 -fpm \
193- php8.2 -zip \
194- php8.2 -ldap \
206+ php8.3 \
207+ php8.3 -apcu \
208+ php8.3 -curl \
209+ php8.3 -xml \
210+ php8.3 -intl \
211+ php8.3 -bcmath \
212+ php8.3 -mbstring \
213+ php8.3 -mysql \
214+ php8.3 -redis \
215+ php8.3 -gd \
216+ php8.3 -fpm \
217+ php8.3 -zip \
218+ php8.3 -ldap \
195219 libmagic1 \
196220 libldap-common \
197221 librdkafka1 \
198222 libbrotli1 \
199- libsimdjson14 \
223+ libsimdjson19 \
200224 libzstd1 \
201225 ssdeep \
202226 libfuzzy2 \
@@ -206,11 +230,11 @@ FROM php-base
206230 curl jq \
207231 && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
208232
209- RUN update-alternatives --set php /usr/bin/php8.2
233+ RUN update-alternatives --set php /usr/bin/php8.3
210234
211235 # Install python modules
212236 COPY --from=python-build /wheels /wheels
213- RUN pip install --no-cache-dir /wheels/*.whl && rm -rf /wheels
237+ RUN pip install --break-system-packages -- no-cache-dir /wheels/*.whl && rm -rf /wheels
214238
215239 # PHP: install prebuilt libraries, then install the app's PHP deps
216240 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}/" ]
@@ -222,12 +246,11 @@ FROM php-base
222246 COPY --from=composer-build --chown=www-data:www-data --chmod=0550 /tmp/Plugin /var/www/MISP/app/Plugin
223247
224248 # 'setuptools' is needed at runtime by 'mixbox'
225- RUN pip install setuptools
226- RUN cp /usr/local/lib/python3.12/site-packages/setuptools/_distutils/version.py \
227- /usr/local/lib/python3.12/site-packages/mixbox/distutils_version.py
249+ RUN cp /usr/lib/python3/dist-packages/setuptools/_distutils/version.py \
250+ /usr/local/lib/python3.12/dist-packages/mixbox/distutils_version.py
228251 RUN sed -i 's/from distutils\. version/from mixbox.distutils_version/' \
229- /usr/local/lib/python3.12/site -packages/mixbox/parser.py
230- RUN pip uninstall -y setuptools pip
252+ /usr/local/lib/python3.12/dist -packages/mixbox/parser.py
253+ RUN apt-get remove --purge python3-pip python3-wheel python3- setuptools -y
231254
232255 # Gather these in one layer, only act on actual directories under /etc/php/
233256 RUN <<-EOF
0 commit comments