【问题标题】:Docker and command docker-phpDocker 和命令 docker-php
【发布时间】:2021-03-15 12:53:06
【问题描述】:

关注我之前的post

我设法通过 pecl 安装了 oci8-2.2.0。

现在我有一个问题,我无法启动命令:

docker-php-ext- *

它总是给我一个错误:

/ bin / sh: 1: docker-php-ext-configure: not found

在我的 Dockerfile 中:

FROM ubuntu:latest

COPY --from=library/docker:latest /usr/local/bin/docker /usr/bin/docker
COPY --from=docker/compose:latest /usr/local/bin/docker-compose /usr/bin/docker-compose

我安装了我需要的包:

RUN apt-get install -y \
    apache2 \
    libapache2-mod-php \
    libldap2-dev \
    vim \
    curl \
    git \
    openssl \
    bash \
    mysql-client \
    g++ \
    gcc \
    make \
    libaio1 \
    wget \
    unzip \
    libapache2-mod-php7.4 \
    software-properties-common \
    systemtap-sdt-dev \
    build-essential \
    libcurl4-gnutls-dev \
    unixodbc-dev \
    net-tools

我安装了 PHP 依赖项:

RUN apt-add-repository -y ppa:ondrej/php
RUN apt-get update
RUN apt-get install -y \
     php7.4 \
     php7.4-fpm \
     php7.4-xml \
     php-common \
     php7.4-gd \
     php7.4-mbstring \
     php7.4-gd \
     php7.4-iconv \
     php7.4-pdo \
     php7.4-tokenizer \
     php7.4-mysql \
     php-ldap \
     php7.4-ldap \
     php7.4-fileinfo \
     php7.4-simplexml \
     php7.4-xmlwriter \
     php7.4-zip \
     php7.4-json \
     php-dev \
     php-pear

最后,安装Oracle Instant Client后启动命令:

# Oracle instantclient
RUN export PHP_DTRACE=yes
ADD instantclient-basic-linux.x64-12.2.0.1.0.zip /tmp/
ADD instantclient-sdk-linux.x64-12.2.0.1.0.zip /tmp/
RUN unzip /tmp/instantclient-basic-linux.x64-12.2.0.1.0.zip -d /usr/local/
RUN unzip /tmp/instantclient-sdk-linux.x64-12.2.0.1.0.zip -d /usr/local/
RUN mv /usr/local/instantclient_12_2 /usr/local/instantclient
RUN ln -s /usr/local/instantclient/libclntsh.so.12.1 /usr/local/instantclient/libclntsh.so
RUN ln -s /usr/local/instantclient/libocci.so.12.1 /usr/local/instantclient/libocci.so

ENV LD_LIBRARY_PATH=/usr/local/instantclient

RUN echo "instantclient,/usr/local/instantclient"| pecl install oci8-2.2.0

RUN docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/usr/local/instantclient
RUN docker-php-ext-install pdo_oci
RUN docker-php-ext-enable oci8-2.2.0

对于 Docker 找到 docker-php-ext- 命令有什么想法吗?

BR

【问题讨论】:

    标签: php linux docker ubuntu


    【解决方案1】:

    命令docker-php-ext- *PHP 图像提供的帮助脚本。但是您使用的是ubuntu:latest 图像,它不包含它们。

    您可以使用来自 php 图像的脚本,例如 that 之一。但我认为使用 php docker images 更容易。

    【讨论】:

    • 呜呜呜呜呜好吧! :) 非常感谢!!
    • 另一个建议是使用 Oracle Instant Client 19,它将连接到与您拥有的旧 12c 版本相同范围的 Oracle DB 版本。它还为您创建这些符号链接。无论您使用哪个版本,我都建议使用 ldconfig 而不是设置 LD_LIBRARY_PATH,请参阅下载页面上的 Instant Client 说明。一些 Oracle Docker 参考资料是:github.com/oracle/docker-images/tree/master/…blogs.oracle.com/opal/…