11ARG PHP_VERSION
22ARG BREF_VERSION
3- FROM bref/build-php-$PHP_VERSION:$BREF_VERSION AS ext
3+ ARG OL_VERSION=8
4+ ARG IC_VERSION=21
5+ # Oracle Instant Client image
6+ FROM public.ecr.aws/docker/library/oraclelinux:$OL_VERSION AS oracle_base
7+ ARG OL_VERSION
8+ RUN dnf -y install oracle-instantclient-release-el${OL_VERSION}
9+
10+ FROM oracle_base AS oracle_devel
11+ RUN dnf -y install oracle-instantclient-devel && \
12+ mkdir -p /opt/oracle && \
13+ cp -r /usr/lib/oracle/*/client64/lib/* /opt/oracle/ && \
14+ cp -r /usr/include/oracle/*/client64/* /opt/oracle/
15+
16+ FROM oracle_base AS oracle_client
17+ RUN dnf -y install oracle-instantclient-basiclite && \
18+ mkdir -p /opt/oracle && \
19+ cp -r /usr/lib/oracle/*/client64/lib/* /opt/oracle/
20+
21+ # Redeclare for scope
422ARG PHP_VERSION
5-
6- # Specify library path
7- ENV LD_LIBRARY_PATH=/usr/lib:/usr/lib64:$LD_LIBRARY_PATH
8- ENV ORACLE_BUILD_DIR=${BUILD_DIR}/oracle
9-
10- # Install libaio
11- RUN dnf install -y libaio
12-
13- # Instant Client newer than 21.x requires glibc 2.28+ which is not available on Amazon Linux 2
14- RUN mkdir -p ${ORACLE_BUILD_DIR}; \
15- cd ${ORACLE_BUILD_DIR}; \
16- curl -o oci-basic.zip https://download.oracle.com/otn_software/linux/instantclient/2116000/instantclient-basiclite-linux.x64-21.16.0.0.0dbru.zip && \
17- unzip oci-basic.zip -d src -x META-INF/* && \
18- curl -o oci-sdk.zip https://download.oracle.com/otn_software/linux/instantclient/2116000/instantclient-sdk-linux.x64-21.16.0.0.0dbru.zip && \
19- unzip oci-sdk.zip -d src -x META-INF/*
20-
21- RUN if [ "$PHP_VERSION" = "80" ] ; then \
22- echo "instantclient,${ORACLE_BUILD_DIR}/src/instantclient_21_16" | pecl install oci8-3.0.1; \
23- elif [ "$PHP_VERSION" = "81" ] ; then \
24- echo "instantclient,${ORACLE_BUILD_DIR}/src/instantclient_21_16" | pecl install oci8-3.2.1; \
25- else \
26- echo "instantclient,${ORACLE_BUILD_DIR}/src/instantclient_21_16" | pecl install oci8; \
27- fi
28-
29- RUN cp /usr/lib64/libaio.so.1 /tmp/libaio.so.1
30- RUN cp ${ORACLE_BUILD_DIR}/src/instantclient_21_16/libclntshcore.so.21.1 /tmp/libclntshcore.so.21.1
31- RUN cp ${ORACLE_BUILD_DIR}/src/instantclient_21_16/libclntsh.so.21.1 /tmp/libclntsh.so.21.1
32- RUN cp ${ORACLE_BUILD_DIR}/src/instantclient_21_16/libocci.so.21.1 /tmp/libocci.so.21.1
33- RUN cp ${ORACLE_BUILD_DIR}/src/instantclient_21_16/libnnz21.so /tmp/libnnz21.so
34- RUN cp ${ORACLE_BUILD_DIR}/src/instantclient_21_16/libociicus.so /tmp/libociicus.so
35- RUN cp `php-config --extension-dir`/oci8.so /tmp/oci8.so
36- RUN echo 'extension=oci8.so' > /tmp/ext.ini
37-
38- RUN php /bref/lib-copy/copy-dependencies.php /tmp/oci8.so /tmp/extension-libs
39- # Missing these two
40- RUN cp /tmp/libocci.so.21.1 /tmp/extension-libs
41- RUN cp /tmp/libociicus.so /tmp/extension-libs
23+ ARG BREF_VERSION
24+ FROM bref/build-php-$PHP_VERSION:$BREF_VERSION AS ext
25+ ARG IC_VERSION
26+ ENV ORACLE_DEVEL_DIR=/opt/oracle-devel
27+ ENV ORACLE_CLIENT_DIR=/opt/oracle-client
28+ ENV LD_LIBRARY_PATH=/usr/lib:/usr/lib64:$ORACLE_CLIENT_DIR:$ORACLE_DEVEL_DIR:$LD_LIBRARY_PATH
29+
30+ COPY --from=oracle_devel /usr/lib64/libaio.so.1 /usr/lib64/libaio.so.1
31+ COPY --from=oracle_devel /opt/oracle $ORACLE_DEVEL_DIR
32+ COPY --from=oracle_client /opt/oracle $ORACLE_CLIENT_DIR
33+
34+ RUN echo "instantclient,${ORACLE_DEVEL_DIR}" | pecl install oci8
35+
36+ RUN cp /usr/lib64/libaio.so.1 /tmp/libaio.so.1 && \
37+ cp ${ORACLE_CLIENT_DIR}/libclntshcore.so.${IC_VERSION}.1 /tmp && \
38+ cp ${ORACLE_CLIENT_DIR}/libclntsh.so.${IC_VERSION}.1 /tmp && \
39+ cp ${ORACLE_CLIENT_DIR}/libnnz${IC_VERSION}.so /tmp && \
40+ cp ${ORACLE_CLIENT_DIR}/libocci.so.${IC_VERSION}.1 /tmp && \
41+ cp ${ORACLE_CLIENT_DIR}/libociicus.so /tmp && \
42+ cp `php-config --extension-dir`/oci8.so /tmp/oci8.so && \
43+ echo 'extension=oci8.so' > /tmp/ext.ini
44+
45+ RUN php /bref/lib-copy/copy-dependencies.php /tmp/oci8.so /tmp/extension-libs && \
46+ cp /tmp/libocci.so.${IC_VERSION}.1 /tmp/extension-libs && \
47+ cp /tmp/libociicus.so /tmp/extension-libs
4248
4349# Build the final image from the scratch image that contain files you want to export
4450FROM scratch
4551
4652COPY --from=ext /tmp/oci8.so /opt/bref/extensions/oci8.so
4753COPY --from=ext /tmp/ext.ini /opt/bref/etc/php/conf.d/ext-oci8.ini
48- COPY --from=ext /tmp/extension-libs /opt/lib
54+ COPY --from=ext /tmp/extension-libs /opt/lib
0 commit comments