CodeGym /행동 /Docker SELF /애플리케이션을 위한 네트워크와 볼륨 설정

애플리케이션을 위한 네트워크와 볼륨 설정

Docker SELF
레벨 23 , 레슨 4
사용 가능

5.1 네트워크 설정

자, 우리의 멀티 컨테이너 애플리케이션을 위해 네트워크와 볼륨을 어떻게 설정하는지 자세히 살펴보자. 이건 서비스 간의 올바른 상호 작용과 데이터의 장기적인 저장을 보장할 거야.

Docker 네트워크를 사용하면 컨테이너들끼리 상호 작용할 수 있어. 우리 애플리케이션에서는 프론트엔드, 백엔드, 데이터베이스 간의 연결을 위해 bridge 네트워크를 사용할 거야.

네트워크 생성

우리는 이미 docker-compose.yml 파일에 task-network 네트워크를 정의했어:

Yaml

networks:
  task-network:
    driver: bridge

어디서:

  • task-network: 컨테이너 상호 작용에 사용될 네트워크의 이름.
  • driver: bridge: 네트워크의 타입. bridge 네트워크는 같은 호스트에서 컨테이너를 연결하는 데 표준이야.

서비스를 네트워크에 연결하기

우리는 모든 서비스를 docker-compose.yml 파일에서 이 네트워크에 연결했어. 각 서비스가 올바르게 연결되었는지 확인하자:

프론트엔드 예시:

Yaml

frontend:
  build: ./frontend
  ports:
    - "3000:3000"
  networks:
    - task-network

백엔드 예시:

Yaml

backend:
  build: ./backend
  ports:
    - "5000:5000"
  depends_on:
    - database
  networks:
    - task-network
  environment:
    - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb

데이터베이스 예시:

Yaml

database:
  image: postgres:13
  environment:
    - POSTGRES_DB=taskdb
    - POSTGRES_USER=taskuser
    - POSTGRES_PASSWORD=taskpassword
  networks:
    - task-network
  volumes:
    - db-data:/var/lib/postgresql/data

5.2 볼륨 설정

Docker 볼륨은 컨테이너 데이터를 호스트 시스템에 저장할 수 있게 해주고 지속적인 저장을 보장해 줘. 우리 애플리케이션에서는 PostgreSQL 데이터베이스 데이터를 저장하기 위해 볼륨을 사용할 거야.

볼륨 생성하기

우리는 compose.yaml 파일에서 이미 db-data 볼륨을 정의했어:

Yaml

volumes:
  db-data:

여기서:

  • db-data: PostgreSQL 데이터베이스 데이터를 저장하기 위해 사용될 볼륨의 이름이야.

데이터베이스 서비스에 볼륨 연결하기

우리는 docker-compose.yml 파일에서 데이터베이스 서비스에 db-data 볼륨을 연결했어. 이 작업이 제대로 되었는지 확인해봐:

데이터베이스 예시:

Yaml

database:
  image: postgres:13
  environment:
    - POSTGRES_DB=taskdb
    - POSTGRES_USER=taskuser
    - POSTGRES_PASSWORD=taskpassword
  networks:
    - task-network
  volumes:
    - db-data:/var/lib/postgresql/data  

여기서:

  • volumes: 컨테이너에 연결될 볼륨을 정의해.
  • db-data:/var/lib/postgresql/data: db-data 볼륨과 컨테이너 내부 /var/lib/postgresql/data 디렉터리를 연결해. 이 디렉터리는 PostgreSQL에서 데이터 저장에 사용돼.

5.3 전체 compose.yaml 파일

명확성과 완전성을 위해 네트워크와 볼륨 설정을 포함한 전체 compose.yaml 파일을 제공합니다:

Yaml

version: '3'

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network
        
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
        
  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data
        
networks:
  task-network:
    driver: bridge
        
volumes:
  db-data:

네트워크와 볼륨 설정 확인

네트워크와 볼륨을 설정한 후, 모든 것이 제대로 설정되고 정상적으로 작동하는지 확인하세요:

  1. 1. 컨테이너 실행:
    Terminal
    
    docker compose up
                
  2. 2. 네트워크 확인:
    • docker network ls 명령어를 사용하여 task-network 네트워크가 생성되었는지 확인하세요.
    • docker network inspect task-network 명령어를 사용하여 모든 컨테이너가 이 네트워크에 연결되었는지 확인하세요.
  3. 3. 볼륨 확인:
    • docker volume ls 명령어를 사용하여 db-data 볼륨이 생성되었는지 확인하세요.
    • docker volume inspect db-data 명령어를 사용하여 볼륨의 세부 정보를 확인하세요.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION