Docker 실습 (1) - H2 컨테이너
스터디원의 발표를 통해 Docker를 알게 되고 실질적으로 사용해보고 싶었다.
토이 프로젝트를 개발하면서 Docker를 활용하기 위해 데이터베이스 H2 를 컨테이너로 띄워서 적용해보았다.
(저처럼 Docker 뭔지 감 잡고 싶으신 분들에게 하나씩 도커 컨테이너로 띄워서 적용해보길 추천합니다. )
현재 윈도우10에서 WSL2 우분투 터미널로 Docker를 사용중이다.
1. H2 database
로컬에서 개발시 가볍게 사용하기 위한 용도로 H2 를 설치해서 프로젝트에서 사용하고 있었다.
로컬에 설치한 H2 대신 도커로 H2 컨테이너를 하나 생성해 프로젝트에서 활용하고 싶었다.
참고 : docker hub 사이트의 h2
도커에서 아래 명령문 하나면 h2를 별도의 설치 없이 사용 가능하다.
step1. h2 이미지 다운로드 및 컨테이너 생성
docker run -d -p 1521:1521 -p 8081:81 -v /mnt/c/User/directory/h2:/opt/h2-data -e H2_OPTIONS="-ifNotExists" --name=h2 oscarfonts/h2
- 'd' : 도커 컨테이너를 백그라운드에서 실행하는 옵션
- 'p' : 도커 컨테이너와 로컬 포트를 연결하는 옵션
- 'v' : h2 컨테이너 생성후 데이터가 쌓이면 로컬 피씨 상에 저장되는 위치를 설정, 해당 옵션이 없다면 컨테이너가 사라지는 동시에 데이터도 날아가게 된다. (/mnt/c/User/directory/h2는 내가 별도로 로컬에 만든 디렉토리)
- 'name' : 컨테이너에 식별 가능한 이름을 별도로 지정. 별도로 지정하지 않으면 도커가 내부적으로 임의의 단어로 지정
- 'H2_OPTIONS="-ifNotExists"' : 해당 옵션이 없으면 새로운 데이터베이스를 생성할 수 없음
로컬에 받아둔 h2 이미지가 없다면 자동으로 이미지 다운로드가 먼저 실행되고 이후 컨테이너가 생성된다.
step2. 컨테이너 구동 확인
# 실행중인 도커 컨테이너 확인
docker ps
- 현재 구동중인 컨테이너 목록에서 h2 를 찾기
- 브라우저에서 h2 웹 콘솔에 접속 (localhost:8081)
이렇게 몇개의 명령어로 h2 데이터베이스를 도커 컨테이너로 사용 가능하게 된 것!!
step3. h2 컨테이너에 접속해서 새로운 데이터베이스 만들기
h2 는 기본으로 test라는 데이터베이스를 생성해준다. 추가로 새로운 데이터베이스를 만들기 위해 h2 컨테이너에 접속해서 콘솔 명령어를 날려보자.
docker exec -it h2 /bin/bash
# h2 컨테이너에 접속
- 'exec' : 구동중인 컨테이너 내부에 명령을 내리기 위해 사용
- 'it' : 컨테이너의 bash 실행을 위해 -i, -t 옵션을 사용
# h2 컨테이너
cd /opt/h2/bin
java -cp h2-1.4.199.jar org.h2.tools.Shell
#URL
jdbc:h2:tcp://localhost:1521/demo
#Dirver
org.h2.Driver
#User
sa
#Password
[Enter]
sql> quit
# /opt/h2-data 디렉토리로 이동하면 새로 만든 demo.mv.db 확인 가능
* 데이터베이스 생성은 위 방법 외에도 웹 콘솔에서도 생성 가능
step4. 프로젝트에 연결하기
현재 스프링부트 프로젝트를 생성해서 개발 중.
설정 부분 중 url만 변경해서 간단하게 도커 h2 컨테이너를 사용할 수 있다.
해당 프로젝트 실행 시키고 데이터가 정상적으로 저장 되는것을 확인 할 수 있었다.
간단하게 원하는 컨테이너를 이렇게 올려서 사용할 수 있구나... 다음에는 MySql 로 해봐야지.