Docker

Docker network

Dean83 2025. 11. 12. 15:36

로컬에서 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