보통 내가 자주 쓰는 환경이, 아파치, 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
================================================================
여기까지이다!!!
이정도면, 사용하는데, 충분하더라.
혹시, 수정더하고 싶으면,
도커 개인 이미지 만들기(컨테이너 테스트하는 법) 블로그
여기 포스트에서 확인해보고, 이런 방법으로 해보면 된다.
===================================
그외 괜찮았던, 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/