본문 바로가기
Q&A2024년 10월 21일1분 읽기

Docker 컨테이너 간 통신 방법

배
배준호
조회 610댓글 3

Docker에서 여러 컨테이너끼리 통신하는 방법을 알려주세요.

댓글 3

김김영삼2년 전

Docker 컨테이너 간 통신:

# 1. Docker Compose (가장 간편)
# 같은 compose 파일의 서비스는 서비스명으로 통신
services:
app:
image: myapp
environment:
- DB_HOST=db # 서비스명이 호스트명
db:
image: postgres

# app 컨테이너에서: postgres://db:5432/mydb

# 2. 커스텀 네트워크
docker network create mynet
docker run --network mynet --name api myapi
docker run --network mynet --name db postgres
# api에서: postgres://db:5432

같은 네트워크 안에서는 컨테이너 이름이 곧 호스트명입니다. localhost가 아닌 서비스명으로 접근하세요.

배배준호(guest)2년 전
docker compose에서 depends_on을 쓰면 DB가 준비된 후에 앱이 시작되나요?
김김영삼2년 전

아닙니다! depends_on은 컨테이너 시작 순서만 보장하지, DB가 "준비"됐는지는 확인하지 않습니다.

# 해결: wait-for-it 또는 healthcheck
services:
db:
image: postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
app:
depends_on:
db:
condition: service_healthy
Ctrl+Enter로 등록