일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TypeScript
- docker
- TLS
- EC2
- Spring Legacy Project
- sample
- 프로그래머스
- github
- Jenkins
- spring
- ssh
- window
- SSL
- Client
- centos7
- WebHook
- vagrant
- db
- mariadb
- Git
- DISTINCT
- 책 정리
- Linux
- spring boot
- Hibernate
- 코딩테스트
- AWS
- Java
- jdbc
- 토비의스프링
- Today
- Total
Woopii Vyeolog
[Docker] 컨테이너끼리 통신 본문
[참고]
https://blackpost38.github.io/2018/01/13/networking-docker-container/
[참고]
https://woopi1087.tistory.com/87
컨테이너 형태로 올라가 있는, Eureka-Discovery-Server에 Application(Api-Gateway)을 등록하려고 한다
등록을 하려면, Application(Api-Gateway)에 Eureka-Server의 Default-Url을 설정해야 한다.
문제는, Eureka-Server의 IP는 고정이 아니라 컨테이너를 띄울 떄 마다 변동 될 수 있다는 것이다.
이를 해결하기 위해, 특정 컨테이너들을 서로 연결 할 수 있게 Docker 브릿지를 하나 새로 만들고,
그 브릿지에 컨테이너들을 연결 될 수 있도록 한다.
컨테이너 연결 시, 컨테이너 이름으로 DNS가 설정되기 때문에 IP가 변동되는 상황을 신경쓰지 않아도 된다.
1. 서로 다른 컨테이너에 통신을 수행할 Application 준비
1. Eureka-Discovery-Server
2. Api-Gateway
Api-Gateway의 설정에 Eureka-Discovery-Server를 등록하면, Api-Gateway기동 시 Eureka-Discovery-Server에 통신 요청을 보내어 등록하게 된다.
Api-Gateway Application의 application.yml
server:
port: 9000
spring:
application:
name: api-gateway
# devtools:
# livereload:
# enabled: true
# restart:
# enabled: true
security:
user: # application 에서는 user를 한명만 추가 가능하다
name: user
password: user
roles: USER
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
# eureka-discovery-server은 브릿지에 연결된 컨테이너 이름
defaultZone: http://eureka-discovery-server:8761/eureka
2. Docker 이미지 빌드
이미지 빌드 시 주의할 점은 명령어는 Dockerfile이 있는 디렉토리에서 해야한다.
[참고] https://woopi1087.tistory.com/87
docker build -t eureka-discovery-server:1.0 -f dockerfile-eureka-discovery-server .
docker build -t api-gateway:1.0 -f dockerfile-api-gateway .
3. 브릿지 생성
docker network create --driver bridge my-bridge
4. 컨테이너 생성 및 브릿지에 연결
컨테이너 생성 시 새로만든 브릿지에 연결한다.
docker run -d -p 8761:8761 --name eureka-discovery-server --network my-bridge eureka-discovery-server:1.0
docker run -d -p 9000:9000 --name api-gateway --network my-bridge api-gateway:1.0
5. 기동중인 컨테이너를 브릿지에 등록
만약 이미 컨테이너가 기동중이라면, 아래 명령어로 새로운 브릿지에 등록할 수 있다.
docker network connect mybridge eureka-discovery-server
docker network connect mybridge api-gateway
6. 연결 확인
호스트 OS에서 브라우저를 띄워 VM에서 띄우고 있는 Eureka-Discovery-Server로 접속 해본다
Api-Gateway Application이 Eureka-Discovery-Server와 통신하여 등록된 것을 확인 할 수 있다.
'Docker' 카테고리의 다른 글
[Docker] 명령어 자동 완성 플러그인 설치 (mac) (0) | 2024.02.22 |
---|---|
[Docker] mac에서 docker 설치 (0) | 2024.02.22 |
[Docker] Spring Boot 어플리케이션 이미지 생성 (0) | 2022.08.31 |
[Docker] Centos7환경에서 Docker 설치 (0) | 2022.08.30 |
[Docker] Docker 관련 개념 정리 링크 모음 (0) | 2022.08.30 |