이전 포스팅에서 했던 NGINX
기반으로 DB를 읽고 수정하는 API를 가진 nodejs 컨테이너와 mongodb 컨테이너를 Docker network
를 이용하여 컨테이너끼리 통신할 수 있도록 만들어보려한다.
자세한 설명은 추후 포스팅에 작성하고 이 포스팅에서는 실습을 위주로 작성하려한다.
실습을 위해 간략히 설명하면 각 컨테이너는 격리된 환경에서 돌아가기 때문에 다른컨테이너와의 통신이 불가능하다. Docker Network
는 이 불가능한 다른 컨테이너와의 통신을 가능하게 해준다.
이전까지
--link
옵션으로 가능했지만 이 기능은 곧 제거된다고 안내되어있다.
$ docker network create network-prac
$ docker network ls
docker network create {이름} 으로 생성할 수 있다.
docker network ls는 현재 네트워크를 보여준다.
docker network rm {이름} 으로 네트워크를 삭제할 수 있다.
network-prac
이라는 네트워크를 생성하고 ls 명령을 통해 확인했다.
이 네트워크가 앞으로 생성할 nodejs
컨테이너와 mongodb
컨테이너의 내부 통신을 할 수 있도록 할 것이다.
$ docker run -d --name mongo --network network-prac mongo
mongo
라는 이름을 가지고 network-prac
네트워크를 사용하며 mongo:latest
이미지를 사용하는 컨테이너를 생성한다.만약 nodejs프로젝트를 이 포스팅에서 사용되는 자료를 사용한다면 컨테이너이름을 꼭 mongo로 해야합니다
$ docker run -d --name nodejs -p 3000:3000 --network network-prac hschoi1104/docekr-nodejs-mongodb:second
hschoi1104/docker-nodejs-mongodb:second
이미지를 사용 했다. Method | Url | Parameter | Description |
---|---|---|---|
Get | /users | - | 전체 사용자 리스트 반환 |
Post | /users | "name","email","password" | 사용자 생성 |
Delete | /users/:id | - | 'id'를가지는 사용자 삭제 |
Put | /users/:id | "name","email","password" | 사용자 정보 수정 |
mongodb://mongo:27017/docker_apiTest
로 설정해 두었다.mongo
로 지정했다.두개의 컨테이너를 생성하고난 결과는 아래와 같다.
$ docker network inspect network-prac
docker network inspect {네트워크 명}
특정 네트워크의 상태를 볼 수 있다.
containers
부분에 두개의 컨테이너가 network-prac
에 연결된 것을 볼 수 있다.Post Man
을 사용해서 EC2 인스턴스에서 방금 구성한 API서버의 API 테스트를 통해 제대로 구성되어있나 확인해 보자.
먼저 Post Man
으로 AWS EC2로 REST API 요청을 보내려면 인증과정을 추가해 주어야한다.
Auth->TYPE-> AWS Signature 선택 후
IAM 계정의 AcessKey, SecretKey를 입력해준다.
URL은 http://{Instance Public DNS}/users
형태이다.
먼저 사용자 정보를 생성요청을 보냈다.
잘 요청이 처리 된 듯하다.
다음으로 사용자 정보 읽기 요청을 보냈다.
포스팅을 하면서 겼었던 문제이다.
API TEST를 들어가기전에 log명령이나 ps 명령으로 컨테이너 생성 후 상태를 확인했어야했다..