Skip to content

Commit 4056516

Browse files
committed
[v84] fix MongoDB build - compile from source
- Add --load flag to docker buildx so image is available locally - Compile MongoDB extension from source since PEAR is not available in AL2023 - Download from pecl.php.net and build with phpize/configure/make - Fix mongodb.so path to /usr/lib64/php8.4/modules/
1 parent e58d577 commit 4056516

2 files changed

Lines changed: 15 additions & 11 deletions

File tree

libs/amazon-linux-2023-v84/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ DOCKER_PLATFORM=linux/amd64
1515
# ######################
1616

1717
build:
18-
docker buildx build --platform ${DOCKER_PLATFORM} -t ${DOCKER_IMAGE} -f ./build/Dockerfile ./build
18+
docker buildx build --load --platform ${DOCKER_PLATFORM} -t ${DOCKER_IMAGE} -f ./build/Dockerfile ./build
1919

2020
# #################################################
2121
# Separate PHP bins + shared libs from Docker image
@@ -83,7 +83,7 @@ dist: build
8383
docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/phar.so > ${DIST_PHP_MODULES_PATH}/phar.so
8484
docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/posix.so > ${DIST_PHP_MODULES_PATH}/posix.so
8585
docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/redis.so > ${DIST_PHP_MODULES_PATH}/redis.so
86-
docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php/modules/mongodb.so > ${DIST_PHP_MODULES_PATH}/mongodb.so
86+
docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/mongodb.so > ${DIST_PHP_MODULES_PATH}/mongodb.so
8787
docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/shmop.so > ${DIST_PHP_MODULES_PATH}/shmop.so
8888
docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/simplexml.so > ${DIST_PHP_MODULES_PATH}/simplexml.so
8989
docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/soap.so > ${DIST_PHP_MODULES_PATH}/soap.so

libs/amazon-linux-2023-v84/build/Dockerfile

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,18 @@ RUN dnf install -y \
4646
${PHP}-pecl-msgpack \
4747
${PHP}-pecl-redis6
4848

49-
# Install MongoDB extension from PECL (not available as native AL2023 package)
50-
# Note: php-pear is the generic PEAR package, not php8.4-pear
51-
RUN dnf install -y ${PHP}-devel php-pear openssl-devel
52-
RUN pecl install mongodb
53-
RUN echo "extension=mongodb.so" > /etc/php.d/50-mongodb.ini
49+
# Install MongoDB extension - compile from source (PEAR not available in AL2023)
50+
RUN dnf install -y ${PHP}-devel openssl-devel cyrus-sasl-devel
51+
RUN curl -sL https://pecl.php.net/get/mongodb -o /tmp/mongodb.tgz && \
52+
mkdir -p /tmp/mongodb && \
53+
tar -xzf /tmp/mongodb.tgz -C /tmp/mongodb --strip-components=1 && \
54+
cd /tmp/mongodb && \
55+
phpize && \
56+
./configure --with-php-config=/usr/bin/php-config && \
57+
make -j$(nproc) && \
58+
make install && \
59+
echo "extension=mongodb.so" > /etc/php.d/50-mongodb.ini && \
60+
rm -rf /tmp/mongodb /tmp/mongodb.tgz
5461

5562
# Install PostgreSQL client library
5663
RUN dnf install -y postgresql15
@@ -64,14 +71,11 @@ RUN patchelf --set-rpath '$ORIGIN' /usr/bin/php || true
6471
RUN patchelf --set-rpath '$ORIGIN' /usr/bin/php-cgi || true
6572
RUN patchelf --set-rpath '$ORIGIN' /usr/sbin/php-fpm || true
6673

67-
# Patch extension modules (native packages)
74+
# Patch extension modules (native packages + compiled mongodb)
6875
RUN for so in /usr/lib64/php8.4/modules/*.so; do \
6976
patchelf --set-rpath '$ORIGIN' "$so" || true; \
7077
done
7178

72-
# Patch PECL-compiled mongodb extension
73-
RUN patchelf --set-rpath '$ORIGIN' /usr/lib64/php/modules/mongodb.so || true
74-
7579
WORKDIR /var/task
7680

7781
ADD ./conf /var/task/php

0 commit comments

Comments
 (0)