简体   繁体   English

dockerfile 设置 php 连接到 Oracle

[英]dockerfile setup for php connecting to Oracle

I have problem setting up the php connecting to Oracle databases, the following message is encountered:我在设置 php 连接到 Oracle 数据库时遇到问题,遇到以下消息:

Step 4/7 : ADD instantclient-basic-linux.x64-12.1.0.2.0.zip /opt/oracle
ERROR: Service 'php-apache' failed to build: ADD failed: stat /var/lib/docker/tmp/docker-builder164874438/instantclient-basic-linux.x64-12.1.0.2.0.zip: no such file or directory

Dockerfile Dockerfile

FROM php:7.4-apache
RUN docker-php-ext-install pdo pdo_mysql mysqli

ORACLE oci ORACLE oci

RUN mkdir /opt/oracle \
    && cd /opt/oracle
ADD instantclient-basic-linux.x64-12.1.0.2.0.zip /opt/oracle
ADD instantclient-sdk-linux.x64-12.1.0.2.0.zip /opt/oracle

Install Oracle Instant Client安装 Oracle 即时客户端

RUN  unzip /opt/oracle/instantclient-basic-linux.x64-12.1.0.2.0.zip -d /opt/oracle \
    && unzip /opt/oracle/instantclient-sdk-linux.x64-12.1.0.2.0.zip -d /opt/oracle \
    && ln -s /opt/oracle/instantclient_12_1/libclntsh.so.12.1 /opt/oracle/instantclient_12_1/libclntsh.so \
    && ln -s /opt/oracle/instantclient_12_1/libclntshcore.so.12.1 /opt/oracle/instantclient_12_1/libclntshcore.so \
    && ln -s /opt/oracle/instantclient_12_1/libocci.so.12.1 /opt/oracle/instantclient_12_1/libocci.so \
    && rm -rf /opt/oracle/*.zip

Install Oracle extensions安装 Oracle 扩展

RUN echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8 \ 
      && docker-php-ext-enable \
               oci8 \ 
       && docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/opt/oracle/instantclient_12_1,12.1 \
       && docker-php-ext-install \
               pdo_oci 

Your error sounds like something simple with paths or not having the zip file where you think it is.您的错误听起来像是简单的路径或没有您认为的 zip 文件。

I suggest you look at Oracle's sample Dockerfiles for PHP: https://github.com/oracle/docker-images/tree/master/OracleLinuxDevelopers eg this Dockerfile .我建议您查看 Oracle 的 PHP 的示例 Dockerfile: https://github.com/oracle/docker-images/tree/master/OracleLinuxDevelopers例如此Z3254677A7917C6C01FZFB8C6571FZFB8C65212

Also check out Docker for Oracle Database Applications in Node.js and Python , which shows Instant Client.另请查看Docker 的 Oracle 数据库应用程序在 Node.js 和 ZA7F5F35426B927411FC9231B56中的即时客户端。

Do you really need to use Instant Client 12.1?您真的需要使用 Instant Client 12.1 吗? Oracle Instant Client 19c can connect to Oracle DB 11.2 or later and is easier to get (it doesn't need a click through to download). Oracle Instant Client 19c 可以连接到 Oracle DB 11.2 或更高版本,并且更容易获得(无需点击即可下载)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM