도커로 가는 초보 가이드 (3부) - 커뮤니케이션

도커로 가는 초보 가이드 (3부) - 커뮤니케이션

반응형

우리는 제1부에서 도커 기본에 대해 배웠고 제2부에서 도커 기본이 무엇이며 왜 우리가 볼륨이 필요한지에 대해서도 알아봤다. 이제 애플리케이션에 필요한 모든 커뮤니케이션 유형과 도커를 사용하여 이를 달성하는 방법을 알아보겠습니다.

WWW로 가는 컨테이너

도커 컨테이너에 있는 우리의 애플리케이션은 읽기나 쓰기를 위해 월드 와이드 웹과 통신하기를 원한다. 예를 들어, 우리의 어플리케이션은 유튜브 API를 사용하여 우리의 iframe을 위한 비디오를 가져오거나, 또는 우리가 Youtube와 위키피디아에서 폭로한 api와 소통할 필요가 있는 위키피디아 API를 사용하여 검색 위젯을 구축한다. 이것은 추가적인 효과 없이 할 수 있다.ts, 도커가 이를 즉시 지지합니다.

컨테이너와 호스트 연결

애플리케이션이 로컬 호스트에서 호스팅되는 mongodb와 연결되어야 한다고 가정해 봅시다. 이제 어떻게 해야 할까요? 컨테이너 안의 응용 프로그램이 어떻게 현지에서 호스팅되는 mongodb에 도달하는가?

mongoose.connect('mongodb://localhost/todo_app', {useNewUrlParser: true, useUnifiedTopology: true});

우리는 간단히 위의 코드를 바꿀 수 있다.

mongoose.connect('mongodb://docker.host.internal/todo_app', {useNewUrlParser: true, useUnifiedTopology: true});

다른 컨테이너로 가는 컨테이너

위의 예를 들어보자. 응용 프로그램이 mongodb와 통신하기를 원하지만 이번에는 호스트 시스템이 아닌 다른 컨테이너에서 호스팅됩니다. 이제 어떻게 하면 될까요?

docker run --name mongoDb --rm -d -v data:/data/db mongo

docker container inspect mongoDb

위의 명령의 결과로, 우리는 몽고 컨테이너의 ipAddress를 찾을 수 있다.

"IPAddress": "172.17.0.2",

우리는 연결 문자열을 대체할 수 있습니다.

mongoose.connect('mongodb://172.17.0.2/todo_app', {useNewUrlParser: true, useUnifiedTopology: true});

잠깐, 이 방법밖에 없어?? 안 돼!

네트워크

도커 네트워크 명령

MERN 스택을 사용하여 구축된 토도 애플리케이션으로, 우리의 노드 애플리케이션이 mongo db와 통신합니다.

node container와 mongo container를 같은 네트워크로 가져와서 host ipAddress로 컨테이너 이름을 사용하면 도커가 내부적으로 ipAddress를 해결할 수 있습니다.

docker create network todo-network

docker run \ --name mongodb_container \ --rm \ -d \ --network todo-network \ -v data:/data/db \ mongo ``` ```js docker run \ --name todo-node \ -p 3030:3030 \ --rm \ --network todo-network \ todo-node ``` ```js mongoose.connect('mongodb://mongodb_container/todo_app', {useNewUrlParser: true, useUnifiedTopology: true}); ``` 읽어주셔서 감사합니다!!!

from http://every-issue.tistory.com/8 by ccl(A) rewrite - 2021-10-09 02:26:45