alpineのphp7からoracleに接続しようとして、以下のエラーが出たときの試行錯誤
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php7/modules/oci8.so' - Error loading shared library libnsl.so.1: No such file or directory (needed by /usr/local/lib/instantclient_11_2/libclntsh.so.11.1) in Unknown on line 0
alpineにはlib***のデータを入れるためのパッケージがapkでインストールできなかったりします。
他のサイトにはもうdebianとかcentosとか使おうぜって書いてあるけど、軽量化したいからalpineつかってるんだが?ってなります。
ソースから入れましょう。
以下dockerfileの抜粋です。
FROM alpine
RUN apk --update add \
gettext-dev \
git \
libtirpc-dev \
libtool \
-- nocache
RUN wget https://github.com/thkukuk/libnsl/archive/v*.*.*/libnsl-*.*.*.tar.gz &&
tar xf libnsl-*.*.*.tar.gz &&
cd libnsl-*.*.*/ &&
sh autogen.sh &&
./configure &&
make &&
make install
RUN ln -s /usr/lib/libnsl.so.2 /lib/libnsl.so.1
別にイメージ大きくなってもいいやって人はcentsとかでパッケージを一括インストールしたほうが圧倒的に楽です。
毎回毎回パッケージをインストールし直して一喜一憂するのが本当に手間。。。
いずれ時間があったら全体的な構成含め書きます。