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

Я пытаюсь установить расширение 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 но это возвращает мне эту ошибку:

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

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

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

2

Решение

Я бы рекомендовал использовать операционную систему, поддерживаемую 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, который он использует.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector