因为docker php需要连oracle,创建一个新镜像有oci8 和 pdo_oci扩展
Dockerfile(alpine版)
FROM php:7.4.21-fpm-alpine3.13
# 更换阿里云的镜像源
RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories ; fi
# 编译oci8和pdo_oci扩展需要用到instantclient
# 在官网下载 https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-basic-linux.x64-21.1.0.0.0.zip
COPY ./instantclient_21_1 /usr/lib/instantclient_21_1
# 环境变量一定要设置为对应的地址
ENV ORACLE_BASE /usr/lib/instantclient_21_1
ENV LD_LIBRARY_PATH /usr/lib/instantclient_21_1
ENV TNS_ADMIN /usr/lib/instantclient_21_1
ENV ORACLE_HOME /usr/lib/instantclient_21_1
# 下面创建的软链接一定不能少
# Install Instantclient Basic Light Oracle and Dependencies
RUN apk add -U --no-cache \
autoconf \
g++ \
make \
libaio \
libnsl \
libc6-compat \
curl \
&& ln -s /usr/lib/libnsl.so.2 /usr/lib/libnsl.so.1 \
&& ln -s /lib/libc.so.6 /usr/lib/libresolv.so.2 \
&& ln -s /lib64/ld-linux-x86-64.so.2 /usr/lib/ld-linux-x86-64.so.2 \
&& ln -sf /usr/lib/instantclient_21_1/libclntsh.so.21.1 /usr/lib/instantclient_21_1/libclntsh.so \
&& docker-php-ext-configure oci8 --with-oci8=instantclient,/usr/lib/instantclient_21_1/ \
&& docker-php-ext-install oci8 \
&& docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/usr/lib/instantclient_21_1/ \
&& docker-php-ext-install pdo_oci \
&& cd /usr/local/bin \
&& curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar composer && chmod +x composer
关键还是下载 instantclient 客户端,配置软链。然后安装oci8和pdo_oci扩展即可。
其他扩展:略