'도커에서 oci8사용'에 해당되는 글 1건

  1. 2018.07.01 도커에서 Apache PHP Oracle Oci8사용하기(Docker에서 tnsnames.ora사용하기)
2018. 7. 1. 15:54

보통 내가 자주 쓰는 환경이, 아파치, PHP, 오라클인데,


도커로 이미지를 찾다보니, 마음에 드는게 별로 없었다.


아파치, PHP Oracle를 쓰고 싶은데, 오라클연결하려면, oci8사용해야하고,


그리고, 난 tnsnames.ora 파일을 쓰고 싶은데,...


도커 허브에 올라온 이미지들은, 보니까, php7.0에, 오라클 인스턴스 클라이언트 드라이버로만 설치를 한거 같은데,


ORACLE_HOME으로 가서 봐도, ORACLE_HOME/network/admin/tnsnames.ora 이 위치에 파일이며, 폴더가 없는거다.


아.....그래서 이미지들 Dockerfile 보면,  


밑에처럼 오라클 경로 있는거가 있긴한데.....


/usr/local/instantclient_12_1


LD_LIBRARY_PATH="/usr/local/instantclient"' 


ENV LD_LIBRARY_PATH="/usr/local/instantclient_12_1"


잘 안되는거다....


그러다가 


https://hub.docker.com/r/thomasbisignani/docker-apache-php-oracle/


이 이미지를 찾았는데, 그나마 내가 원하는 것들이 다있는 이미지였다. 


오라클 경로도 밑에처럼 되어있고,


# Set up the Oracle environment variables

ENV LD_LIBRARY_PATH /usr/lib/oracle/12.1/client64/lib/

ENV ORACLE_HOME /usr/lib/oracle/12.1/client64/lib/


저기 폴더 밑으로 /network/admin/tnsnames.ora 파일/ 폴더 만들어 주고,


환경변수에 

TNS_ADMIN /usr/lib/oracle/12.1/client64/lib/network/admin


이렇게 넣어주니까, 된다!!



내가 원하는 환경은 


Apache, php5.6, Oracle12g(oci8)연결 이다.


근데, 그나마, 


thomasbisignani/docker-apache-php-oracle 


이게 최고로 나에게 맞는거 같았다.


그래서, 위 이미지에, tns파일생성만 해주고, 

환경변수만 넣어서, Dockerfile를 생성했다.


아!! 그리고 중요한거, tnsnames.ora파일 권한을 꼭 바꿔줘야한다!!!


여기서부터 복사해서 Dockerfile 생성해서 안에 넣어주면 된다.

==================================================================

# Image with Linux Oracle instant client. 


FROM thomasbisignani/docker-apache-php-oracle


MAINTAINER Tyson <tyson444@yahoo.com>


RUN apt-get update && apt-get install -y vim

RUN mkdir -p /usr/lib/oracle/12.1/client64/lib/network/admin



RUN echo "ORCL = \

  (DESCRIPTION = \

    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) \

    (CONNECT_DATA = \

      (SERVER = DEDICATED) \

      (SERVICE_NAME = orcl) \

    ) \

  )" > /usr/lib/oracle/12.1/client64/lib/network/admin/tnsnames.ora


  ENV TNS_ADMIN /usr/lib/oracle/12.1/client64/lib/network/admin


  RUN chmod 757 /usr/lib/oracle/12.1/client64/lib/network/admin/tnsnames.ora



================================================================


여기까지이다!!!


이정도면, 사용하는데, 충분하더라.


혹시, 수정더하고 싶으면, 



도커 개인 이미지 만들기(컨테이너 테스트하는 법) 블로그 


http://tyson.tistory.com/142


여기 포스트에서 확인해보고, 이런 방법으로 해보면 된다.



===================================

그외 괜찮았던, Oci8 Docker목록이다


https://hub.docker.com/r/thomasbisignani/docker-apache-php-oracle/

https://hub.docker.com/r/shenron/nginx-php-fpm-oracle-client/

https://hub.docker.com/r/kmcgill88/php-oracle/

https://hub.docker.com/r/adrianharabula/php7-with-oci8/



Posted by Tyson