로컬에서 DB 컨테이너를 하나 띄우고, 해당 DB에 접속하는 컨테이너를 하나 더 띄울 경우, 네트워크가 맞지 않아 서로 접속 할 수가 없다.
따라서 Docker 에서는 이 두개의 컨테이너를 하나의 network를 공유하도록 설정 할 수 있다.
DB를 띄우는 docker-compose.yaml 에서 설정할 부분은 다음과 같다.
네트워크 이름은 아무거나 원하는걸 적으면 된다.
.....
services:
container_name: local_postgres
postgres-db:
.....
networks:
- 네트워크이름
networks:
네트워크이름:
driver: bridge
....
우선, DB 컨테이너를 띄우고 다음의 명령어를 통해서 실제 DB가 붙어있는 network 이름을 확인한다.
한가지 주의할 점은 grep 후 Network이다. 소문자 network로 하면 안된다.
docker inspect 컨테이너명(여기서는 local_postgres) | grep Network
이렇게 터미널에서 실행하면, 실제 이용중인 network 이름이 나오게 된다.
이 DB에 접속하는 컨테이너의 docker-compose.yaml 은 다음과 같다.
version: "3.8"
services:
springboot:
container_name: 컨테이너명
image: 이미지명
environment:
SPRING_PROFILES_ACTIVE: prod
SERVER_PORT: 8081
ports:
- "80:8081"
networks:
- db-network
depends_on:
- dbtest # DB 컨테이너가 같은 compose 안에 있거나 네트워크에 있을 경우 (선택사항)
networks:
db-network:
external: true # 이미 존재하는 네트워크를 사용할 때
name: 네트워크명
만일 하나의 docker-component 에서 두개를 설정할 경우에는, 중간에 network 명을 확인 할 필요가 없다.
그리고 한가지 주의할 점이, 스프링부트의 application.yaml 에서 DB 접속 주소를 설정할 때에는 DB컨테이너 이름을 적어줘야 한다.
예 :
jdbc:postgresql://데이터베이스_컨테이너이름:포트번호/db테이블명
'Docker' 카테고리의 다른 글
| docker 이미지 AWS ECR에 올리기 (0) | 2025.11.07 |
|---|---|
| Docker compose (0) | 2025.11.06 |
| Dockerfile 구성 및 빌드(hub에 업로드) (0) | 2025.11.06 |
| Docker 기본 명령어 (0) | 2025.11.06 |