5.1 네트워크 설정
자, 우리의 멀티 컨테이너 애플리케이션을 위해 네트워크와 볼륨을 어떻게 설정하는지 자세히 살펴보자. 이건 서비스 간의 올바른 상호 작용과 데이터의 장기적인 저장을 보장할 거야.
Docker 네트워크를 사용하면 컨테이너들끼리 상호 작용할 수 있어. 우리 애플리케이션에서는 프론트엔드, 백엔드, 데이터베이스 간의 연결을 위해 bridge
네트워크를 사용할 거야.
네트워크 생성
우리는 이미 docker-compose.yml
파일에 task-network
네트워크를 정의했어:
networks:
task-network:
driver: bridge
어디서:
- task-network: 컨테이너 상호 작용에 사용될 네트워크의 이름.
- driver:
bridge
: 네트워크의 타입.bridge
네트워크는 같은 호스트에서 컨테이너를 연결하는 데 표준이야.
서비스를 네트워크에 연결하기
우리는 모든 서비스를 docker-compose.yml
파일에서 이 네트워크에 연결했어. 각 서비스가 올바르게 연결되었는지 확인하자:
프론트엔드 예시:
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
5.2 볼륨 설정
Docker 볼륨은 컨테이너 데이터를 호스트 시스템에 저장할 수 있게 해주고 지속적인 저장을 보장해 줘. 우리 애플리케이션에서는 PostgreSQL 데이터베이스 데이터를 저장하기 위해 볼륨을 사용할 거야.
볼륨 생성하기
우리는 compose.yaml
파일에서 이미 db-data
볼륨을 정의했어:
volumes:
db-data:
여기서:
-
db-data
: PostgreSQL 데이터베이스 데이터를 저장하기 위해 사용될 볼륨의 이름이야.
데이터베이스 서비스에 볼륨 연결하기
우리는 docker-compose.yml
파일에서 데이터베이스 서비스에 db-data
볼륨을 연결했어. 이 작업이 제대로 되었는지 확인해봐:
데이터베이스 예시:
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
파일을 제공합니다:
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. 컨테이너 실행:
Terminal
docker compose up
- 2. 네트워크 확인:
-
docker network ls
명령어를 사용하여task-network
네트워크가 생성되었는지 확인하세요. -
docker network inspect task-network
명령어를 사용하여 모든 컨테이너가 이 네트워크에 연결되었는지 확인하세요.
-
- 3. 볼륨 확인:
-
docker volume ls
명령어를 사용하여db-data
볼륨이 생성되었는지 확인하세요. -
docker volume inspect db-data
명령어를 사용하여 볼륨의 세부 정보를 확인하세요.
-
GO TO FULL VERSION