Oracle на альпийском Linux - PullRequest
       7

Oracle на альпийском Linux

0 голосов
/ 12 ноября 2018

Я пытаюсь установить расширение OCI8 в моей среде Alpine Linux Docker. Хотя есть несколько мест, где говорят, что это не сработает, есть и такие, которые говорят, что это действительно работает. У меня есть версия 3.4, и по корпоративным причинам она пока остается такой.

Я сделал это в моем Docker Conf:

# Install Oracle Client and build OCI8 (Oracel Command Interface 8 - PHP extension)
USER root
ENV LD_LIBRARY_PATH=/usr/local/instantclient
ENV ORACLE_HOME=/usr/local/instantclient

RUN apk update && apk upgrade
RUN apk add musl-dev libaio autoconf && apk add --update make

## Unzip Instant Client v12
RUN pecl channel-update pecl.php.net
COPY instantclient_12_2.zip /var/www/html/instantclient_12_2.zip
RUN unzip -d /usr/local/ /var/www/html/instantclient_12_2.zip
RUN ln -s /usr/local/instantclient_12_2 /${ORACLE_HOME} && \
    ln -s /${ORACLE_HOME}/libclntsh.so.* /${ORACLE_HOME}/libclntsh.so && \
    ln -s /${ORACLE_HOME}/libocci.so.* /${ORACLE_HOME}/libocci.so && \
    ln -s /${ORACLE_HOME}/lib* /usr/lib && \
    ln -s /${ORACLE_HOME}/sqlplus /usr/bin/sqlplus &&\
    ln -s /usr/lib/libnsl.so.2.0.0  /usr/lib/libnsl.so.1

RUN apk add gcc; exit 0 # This has a history of failing sometimes

RUN echo "instantclient,/usr/local/instantclient" | pecl install oci8 &&\
    echo 'extension=oci8.so' > /usr/local/etc/php/conf.d/30-oci8.ini &&\
    rm -rf /tmp/*.zip /var/cache/apk/* /tmp/pear/

Теперь сборка проходит и выглядит нормально, однако, когда я делаю php -v, я получаю следующее:

Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку '/usr/local/lib/php/extensions/no-debug-non-zts-20160303/oci8.so' - Ошибка загрузки общей библиотеки libnsl.so.1: нет такого файла или каталога (необходимо для /usr/local/instantclient/libclntsh.so.12.1) в Неизвестно на строка 0

Версия PHP 7.1.12.

Я пытался сделать apk add libnsl, но это возвращает мне эту ошибку:

ОШИБКА: неудовлетворительные ограничения: так: libtirpc.so.3 (отсутствует):

Поэтому я попытался также добавить apk add libtirpc-dev («обычный» libtirpc недоступен для моей версии или чего-то еще), но это ничего не изменило.

Есть какие-нибудь подсказки?

1 Ответ

0 голосов
/ 14 ноября 2018

Я бы рекомендовал использовать операционную систему, поддерживаемую Oracle, чтобы избежать головной боли при взломе Alpine и неуверенности, что она не упадет в критическое время. И, таким образом, вселяя уверенность в том, что ваш бизнес не подвергнется негативному воздействию. Попробуйте https://github.com/oracle/docker-images/tree/master/OracleInstantClient

Другие комментарии

  • Не устанавливайте ORACLE_HOME при использовании Instant Client. Эта переменная для полной установки программного обеспечения.
  • Используйте ldconfig для установки пути к системной библиотеке, см. инструкции по установке Instant Client, например, здесь .
  • Используйте Instant Client 18.3, который может подключаться к тем же версиям БД, что и 12.2. (18.3 действительно переименован в 12.2.0.2 в новой системе управления версиями)
  • Преимущество использования образов Oracle Linux Docker заключается в том, что он загружает и устанавливает мгновенный клиент 18.3 без необходимости загрузки вручную.

См. в этом блоге для получения информации о «тонком» контейнере Oracle Linux, который он использует.

...