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
2018. 6. 28. 13:25

아파치에, php, Oracle를 제일 많이 쓰는데, 


Oracle 연결할때 쓰는 oci8 세팅되어있는 도커를 찾다가, 좋은 이미지를 찾았다.



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


https://github.com/davidgaya/docker-apache-php-oci



#도커 이미지 가져오기 

docker pull thomasbisignani/docker-apache-php-oracle


#도커 생성

docker run -p 8080:80 -d -v $(pwd)/sample:/var/www/html thomasbisignani/docker-apache-php-oracle


docker run -p 8080:80 -d -v /web/front:/var/www/html thomasbisignani/docker-apache-php-oracle


서버의 web/front 랑 도커의 폴더랑 연결해 놓는다.


서버의 web/front 폴더에 파일 올리면, 된다.



#도커 목록확인

docker ps -a


하면 실행중인 도커 목록 뜨고, id로 접속하면 된다.



#도커 접속

예)

sudo docker exec -it 7fd516 /bin/bash

sudo docker exec -it {id값} /bin/bash



기본에는 vi가 없어서, vim설치부터했다.


#vim 설치

apt-get update

apt-get install vim


#퍼미션 문제가 뜨길래, 폴더 권한 풀어줬다.

#폴더 권한 주기

cd /var/www

chmod 757 /var/www/html



#아파치 설정바꾸기

vi /etc/apache2/apache2.conf


에서 추가


<Directory /var/www/html/>

    Options Indexes FollowSymLinks

    AllowOverride All

    Require all granted

</Directory>




#프록시 설정해주기

#서버에 여러 도메인 사용시, 가상호스트 세팅을 해주고, 

reverse proxy 설정을 해줘서, 원하는 도메인으로 접속시 8080포트로 보내주는방법이다.


이런식으로 여러 도커 설정을 해줬다.


이건 내 서버 vhost 파일 위치다.

/usr/local/etc/apache24/conf/extra/httpd-vhost.conf

또는

/etc/httpd/conf 에 있다



#원본

<VirtualHost *:80 *:443>

    ServerName test.com

    SetEnv HOST test.com

    DocumentRoot "/web/front"

    ProxyPass / http://localhost:8080/

    ProxyPassReverse / http://localhost:8080/

    <IfModule dir_module>

        DirectoryIndex  index.html index.htm index.cgi index.php index.php5

    </IfModule>

    <Directory "/web/front">

        Options MultiViews FollowSymLinks ExecCGI

        AllowOverride All

        <IfModule authz_core_module>

            Require all granted

        </IfModule>

    </Directory>


    <FilesMatch "\.(php[345]?|phtml)$">

        SetHandler "proxy:unix:/run/php-fpm/php56-fpm.sock|fcgi://localhost"


    </FilesMatch>


    ErrorDocument 400 /_webstation_/400.html

    ErrorDocument 401 /_webstation_/401.html

    ErrorDocument 402 /_webstation_/402.html

    ErrorDocument 403 /_webstation_/403.html

    ErrorDocument 404 /_webstation_/404.html

    ErrorDocument 405 /_webstation_/405.html

    ErrorDocument 406 /_webstation_/406.html

    ErrorDocument 407 /_webstation_/407.html

    ErrorDocument 408 /_webstation_/408.html

    ErrorDocument 500 /_webstation_/500.html

    ErrorDocument 501 /_webstation_/501.html

    ErrorDocument 502 /_webstation_/502.html

    ErrorDocument 503 /_webstation_/503.html

    ErrorDocument 504 /_webstation_/504.html

    ErrorDocument 505 /_webstation_/505.html


</VirtualHost>



위 설정은 내 설정이므로, 각자 서버에 맞게 찾아서 세팅하세요.


역프록시 설정은



    ProxyPass / http://localhost:8080/

    ProxyPassReverse / http://localhost:8080/


위에 두줄 추가해주고, 하면 나같은 경우는 됬다.


그리고


"리눅스 가상호스트" 검색하면 많이 뜨니까, 가상호스트 세팅은 찾아서 해보세요.


이렇게만 해 놓으면 그래도 바로 Docker 사용가능하다.


사실 이만한 이미지는 없는거 같다.


vi 정도만 설치해주고, 콘테이너 안에서 대부분 설정따로 해줄만한거가 없기 때문에, 완전 빠르게 세팅했다.



시놀로지에서 프록시설정해주기

(http://tyson.tistory.com/135)




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

참고 블로그 

http://m.assayo.com/board_view.html?board=forum_nas&pid=19139

Posted by Tyson