DevOps/Docker
도커컴포즈에서 컨테이너 간 통신하기
rkrkrr0101
2024. 10. 8. 01:14
예전에 사용하던 --link는 deprecated되었다
그래서 대신 사용되는게 network다
이건 그 k8s의 서비스같은 개념으로,이름으로 통신할수있는 통신소,즉 dns같은 느낌이다
저기에 속한 모든 컨테이너들이 자기 이름으로 리버스프록시를 만들고,자기가 가지고있는 하위 컨테이너들에게 전달하는 느낌?로드밸런싱기능은 따로 구현해야한다고는 알고있다,원시 k8s서비스같은느낌인듯
version: '3'
services:
whyprice: //이 이름으로 통신할수있음,ip대용
image: localhost:5000/whyprice:0.9
ports:
- "8080:8080"
env_file:
- main.env
networks:
- app-network #얘가 사용할 네트워크
depends_on:
- mysqldb
mysqldb: //이 이름으로 통신할수있음,ip대용
image: mysql:8.0.39-debian
restart: always
environment:
MYSQL_ROOT_PASSWORD: 비번 # root 비밀번호 설정
MYSQL_DATABASE: db명 # 생성할 데이터베이스 이름
MYSQL_USER: 아이디 # 생성할 사용자 이름
MYSQL_PASSWORD: 패스워드 # 사용자 비밀번호
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- app-network #얘가 사용할 네트워크
networks: #네트워크
app-network:
driver: bridge
volumes:
mysql_data:
external: true
이런식으로 서로간 같은 네트워크로 묶어준다음
jdbc:mysql://mysqldb:3306/why_price
이렇게 ip대신 이름을 넣어서 통신하면된다