[docker] docker로 삽질해본 사람? 여기 여기 붙어라,,

    안녕하세요 저는 회사에서 word cloud를 개발하여 여러 다수 이용자가 사용할 수 있도록 테스트해보기 위해 docker에 

    웹서버와 db서버 각각을 올려두는 실습을 하였습니다. 처음에는 컨테이너가 뭔지 이미지가 뭔지 도커 파일은 어디에 있고 어떻게 만들고 어떻게 쓰고 왜 쓰는지 전혀 이해하지 못했습니다 ㅎㅎ,, 

     

    하지만 이젠 여러차례의 삽질을 걸쳐 드디어,, 활용할 수 있는 단계까지 오게 되었습니다.

    도커를 사용하기 위해 알아야할 용어는 다른 페이지에서 다뤘으니 그 페이지로 이동하셔서 보면 될거 같습니다. 

    먼저 저는 어떤 삽질을 하였는지,, 알려드리겠습니다.

     

    상황은 이렇습니다. python flask 서버를 열고 db mysql서버를 열어서 둘이 연동하는 거였습니다. 말로는 굉장히 간단한 작업이죠 ㅎㅎ,,

    에러가 났던 부분은 여기, 위에 있는 그림의 호스트 설정입니다. 처음엔 어떤 ip주소를 넣어야하나,, 고민고민하고 정말 아무것도 모른체 가만히 두고 localhost에 접속 할 수 없다는 에러만 쳐다보고 있었습니다. 

     

    하지만 웬걸,, docker에서 제공하는 옵션중 어쩌다가 --link 라는 옵션을 발견했습니다.. 

    link옵션에 대해 설명하자면

    link옵션을 사용하면 컨테이너끼리는 private ip를 기반으로 통신한다. 그런데 컨테이너가 재시작되면 ip가 바뀔 수도 있다. 이 문제를 해결하는 방법으로 link를 사용한다. ip가 아닌 컨테이너 이름을 기반으로 통신할 수 있기 때문이다.

    그래서 결론은 컨테이너끼리 통신할때 매번 다른 ip를 대신해 네임을 사용하여 통신이 가능하다는 것이다. 

    그래서 나는 위에 그림처럼 "master"라는 이름으로 통신을 하였고, flask 서버에서 db서버로 ping master라고 하면 통신이 성공적으로 진행되었다.

     

     

    코드는 이처럼 " mysql서버가 켜진 컨테이너이름:통신할때 사용할 네임 " 으로 지정하면 끝! 너무 쉽다 ㅎㅎ 

     

    물론 db와 통신하는 방법은 여러가지가 있겠지만 이 방법이 시각적으로도 편하고 좋을거 같다! 다음 글에서는 도커의 삽질 2를 적어보려고 한다 ㅎㅎ,, 

    하두 삽질을 많이 해서 삽질 시즌 100까지 갈 수 있을거 같다! 

     

     

     

     

    728x90
    반응형

    댓글