[Web] 협업(1) - DB편
업데이트:
물론 개발 단계에서도 클라우드로 DB서버를 띄울 수 있는 자본💰이 있다면, 굳이 이렇게 하지 않아도…
저는 오늘도 힘내, 맥북아!!
본론 (도커를 써보자)
이번 편은 도커를 사용하여 팀원들이 동일한 DB 환경에서 작업할 수 있도록 하는 방법입니다.
팀원들 각자의 로컬에 통일해서 DB환경을 맞춰도 되지만,
다른 포트로 포워딩하기도 쉬워서 이 방법을 추천합니다.
(가령, 로컬에서 3306포트를 MariaDB쓰고 있다가 프로젝트를 MySQL로 해야 한다면,
MySQL의 디폴트 포트(3306)를 다른 포트로 변경해줘야 하는데,,, 저는 도커가 편한거 같아요😅)
도커 설치
스프링 부트 프로젝트에서 MySQL을 사용한다고 가정하고 진행하겠습니다.
먼저 도커를 설치해야 합니다.
OS에 맞게 도커를 설치하는 좋은 블로그가 많네요~~
=> 참고 : 운영체제 별 Docker 설치 방법 총 정리
저는 Mac(인텔칩) 유저이기 때문에, 도커 데스크탑 설치 를 했습니다.
이렇게 설치하면 docker-compose도 함께 설치가 됩니다 :)
그렇게 설치를 하면 /usr/local/bin
경로에 잘 설치된 것을 확인할 수 있습니다.
그리고 저는 .zshrc
에 환경변수를 추가해서 사용하고 있습니다.
vi ~/.zshrc
(맨 밑)
> export PATH="$PATH:/usr/local/bin"
도커 컴포즈 파일 생성
그렇다면 docker-compose.yml에 DB스펙을 정해 봅시다.
도커 컴포즈를 사용하는 이유는 여러 개의 컨테이너를 하나의 서비스로 정의해서 묶음으로 관리하는 용도인데요.
추후에 DB서버와 함께 어플리케이션 서버 컨테이너를 띄우는 작업을 할 때 유용하게 사용됩니다.
각 컨테이너의 의존성, 네트워크, 볼륨 들을 함께 정의할 수 있기 때문입니다.
그렇다면 바로 작성해봅시다!
도커 컴포즈를 사용하려면 가장 먼저 yaml(yml)파일을 작성해야 합니다.
version: "3"
services:
db:
image: mysql:latest
container_name: mydb
restart: always
ports:
- "3307:3306"
environment:
MYSQL_DATABASE: "[DB명]"
MYSQL_ROOT_PASSWORD: "[root 비밀번호]"
MYSQL_USER: "[DB 사용자 이름]"
MYSQL_PASSWORD: "[DB 사용자 패스워드]"
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- version : YAML파일 포맷의 버전을 나타내며, 도커 컴포즈 1.10은 버전 3을 사용합니다.
- services : 생성될 컨테이너들을 묶어놓은 단위입니다.
- db : 생성될 서비스의 이름. (이 항목 아래에서 컨테이너 생성에 필요한 옵션을 지정할 수 있습니다.)
- image : 이미지 이름을 설정. (이미지가 존재하지 않으면 저장소에서 자동으로 내려 받습니다.)
- restart : 컨테이너 실행 중단되면 알아서 재시작
- ports : 컨테이너를 개방할 포트
- environment :
'--env'
옵션과 동일 - command : 컨테이너 실행 시 수행할 명령어로,
docker run
마지막에 붙는 옵션
컨테이너 실행
이제 모든 준비가 끝났습니다.
intellij 사용자라면 플러그인을 설치하면 클릭 한번으로 실행할 수 있습니다.
혹은 터미널에서 아래 명령어로 실행합니다.
docker-compose -f docker-compose.yml up -d
(-f 옵션은 특정 컴포즈 파일을 지정하도록 하는 옵션입니다.)