728x90
반응형
docker-compose를 이용해서 다중 앱 관리를 하고 있었습니다.
하지만 위 그림과 같이 A 컨테이너에서 B 컨테이너에 접속할 때는 어떻게 해야할까요?
예를 들어 A 컨테이너에서 axios.get를 이용해서 B 컨테이너에 있는 API를 호출합니다.
await axios.get("http://127.0.0.1:3000/test").then(response => {
res.status(200).json(response.data);
});
원래였다면 127.0.0.1:3000(=B host)로 호출하여 데이터를 받았을 것입니다.
하지만 이렇게 Docker에 올릴 경우 127.0.0.1:3000을 찾을 수 없다는 에러 문구가 나옵니다.
Docker에서 컨테이너 안에서 다른 컨테이너에 접속할때는 <별칭>:<포트 번호> 형식을 설정해줘야 합니다!
즉 B:3000으로 해줘야지 호출이 가능하다는 것입니다.
docker-compose에서 형식을 설정하는 방법은 docekr-compose.yaml 파일에
services:
A:
(...)
environment:
B_URL: B:3000
위 코드와 같이 해당 컨테이너의 환경변수(=environmet)로 설정해주시면 됩니다.
그리고 다시 axiois.get 코드로 돌아가서
await axios.get(`http://${process.env.B_URL}/test`).then(response => {
res.status(200).json(response.data);
});
환경변수를 이용해주시면 잘 동작하는 것을 확인하실 수 있습니다.
※ Docker에서는 환경변수 사용을 권장하고 있습니다.
728x90
반응형
'Cloud Side > Container > Docker' 카테고리의 다른 글
[Docker] 명령어 모음 (0) | 2022.08.10 |
---|---|
[Docker] 도커 물음표 아이콘 해결방법 - Docker.app 응용 프로그램이 손상되었거나 완전하지 않기 때문에 열 수 없습니다. (0) | 2022.07.21 |
[Docker] Compose 생성하면 container? app! (0) | 2022.06.15 |
[Docker] Hub push error 해결 (0) | 2022.06.13 |
[Docker] Error response from daemon: dial unix docker.raw.sock: connection refused 오류 해결 (0) | 2022.02.06 |
댓글