Docker를 사용하면 로컬 시스템에 직접 데이터베이스를 설치하거나 관리하지 않아도 된다. Docker는 컨테이너라는 가상 환경을 제공하므로, 데이터베이스와 같은 서비스를 이미지로 패키지하고 간단한 명령어로 컨테이너를 실행할 수 있다.
이미지를 하나를 실행할경우 하나의 컨테이너를 사용하는 것이 일반적이기때문에 docker-compose.yaml 파일을 작성할 필요가 없고 docker-cli를 사용해도 된다. 하지만 여러개의 이미지가 필요할경우 docker-compose , kubenetes 사용이 일반적이다. 그중에서도 단일 기기에서는 보통 docker-compose를 사용하여 여러개의 컨테이너를 관리하고, 이를 위해 docker-compose.yaml 파일에 여러개의 컨테이너를 정의하고 관리 한다.
docker run -d \
--name crud-api \
-v $(pwd)/postgres-data:/var/lib/postgresql/data \
-p 5432:5432 \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=postgres \
postgres:15
우선 docker에서 데이터 베이스도 정상적으로 실행이 되었다. pgAdmin을 통해 데이터 베이스에 table이 정상적으로 생성이 되었는지 확인해보자.
정상적으로 생성이 잘 되었다.
services:
postgres:
image: postgres:15
restart: always
volumes:
- ./postgres-data:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
이렇게 docker-compose.yaml 파일을 해당 프로젝트 아래에 생성한후 , docker-compose up 명령어를 입력한다.
docker에서 데이터 베이스도 정상적으로 실행이 되었고 , 데이터 베이스에서는 table또한 정상적으로 생성이 되었다.
이렇게 하게되면 docker가 실행되고 있는 어떤 컴퓨터에서든docker-compose.yaml 파일이 있다면 docker-compose up을 하게 되면 postgresql을 사용할수 있다.
여기 까지 docker,docker-compose를 이용하여 DB에 연결하는 과정을 정리해 보았다.