Docker Mysql 이미지로 DB 연동하기

2017. 7. 21. 14:21Docker

dockerboard.zip

Docker 이미지로 mysql을 이용하여 개발환경 구축하기

목표 : 일단 application(server는 node.js)를 통해 개발을 하여, 간단한 게시판 sample을 가지고 구축하고, docker hub로 부터 mysql 이미지를 가지고 와서, 게시판 application과 mysql 을 연동해보도록 하겠다.

  1. docker pull 명령어를 이용해서, docker hub로 부터 mysql을 이미지를 가져온다
     $ docker pull mysql
    

  2. 다음의 명령을 통해서 가져온 이미지를 확인해본다.
     $ docker images
    


  3. 방금 가져온 mysql 이미지를 가지고 run 명령을 이용하여, mysql 환경설정을 하면서, 컨테이너를 실행해보도록 한다.


    volume은 mysql내에 로컬로 데이터가 저장될 위치를 가르키며, —env 옵션을 통해서 MYSQL_ROOT_PASSSWORD, USER, PASSWORD, DATABASE 이름을 설정이 가능하며, —name 옵션을 통해서, 컨테이너의 이름을 지정할 수 있다. —publish 3306:3306 의 설정은 가:나로 볼 때, 가는 호스트로 들어오는 포트번호를 의미하고, 나는 호스트로 들어온 포트를 컨테이너 포트와 연결시킨다는 의미가 된다.
    즉, mysql 이미지를 처음에 다운받게 되면, default설정으로 외부로 부터 접근을 허용하는 3306포트가 열려있기 때문에 외부로 부터 3306이라는 요청이 들어 온다면, 3306으로 들어오면, 매핑된 포트인 3306을 매핑시켜 mysql과 연동을 시킨다.

  4. docker ps 명령을 통해서, 방금 컨테이너를 생성하고, 실행시킨 것을 확인한다.

     $ docker ps
    



  5. 다음은 해당 명령을 통해서, github에서 node.js 해당 sample application을 가지고 온다.( git 이 없다면, 해당게시물을 첨부파일을 통해 다운로드)
     $ git clone https://github.com/parkjiwoo123/dockerboard.git
    

  6. 좋아하는 편집기를 이용해서 프로그램을 실행하여 application을 열고 /mysql/mysql_connector.js을 열어본다.

    컨테이너를 돌려놓은 mysql 의 3번과 같은 설정정보를 가지고 설정값을 맞춰준다. host는 docker os의 host Ip값이 host정보가
    되기 때문에, host에 docker에서 가상환경의 ip를 적어준다.

  7. 연동 작업이 끝이 났다. 컨테이너로 돌려놓은 mysql에 접속해보자.

    mysql -h 호스트명 -u user 명 -p : 명령을 통해서 mysql에 접속하였고, show databases 명령을 통해 3번에서와 같이 컨테이너를 실행할 떄의 board를 데이터베이스로 설정해주어서 그런지, board 데이터 베이스가 자동으로 생성되어 있다. 접속한 김에, board 데이터 베이스에 접속하여, board 테이블을 만들어 놓자 (칼럼: id, subject, writer, content, originalFilename, filename)

  8. 데이터베이스와 연동이 되었는지 확인하기 위해서, application위치로 찾아가 node로 만들어진 application을 실행한다.

     $ cd application의 위치
     $ npm install  // package.json의 등록된 항목을 받기 위함
     $ npm start
    

    명령을 실행하면 다음과 같은 메세지를 볼 수 있다. Server running at http://localhost:3000 서버가 돌고 있으니, 브라우저창에 http://localhost:3000/board으로 접속한다.

  9. 글쓰기 버튼을 누른 후 , 글을 입력하고 저장 버튼을 누르면, 데이터베이스의 해당 내용이 저장된 것을 확인 할 수 있다.



'Docker' 카테고리의 다른 글

DockerHub-GitHub 연동하여 Autobuild 하기  (1) 2017.08.02
Github에 ssh키 생성하고 등록하기  (1) 2017.07.25
Docker 기본명령  (0) 2017.07.19