개발 Dev/도커 Docker

도커로 mysql 컨테이너 만들어서 로컬 개발환경을 구축하기

Tap to restart 2022. 5. 21. 12:00
반응형

API 서버 등 백엔드 개발을 하게 되면 데이터베이스가 필수다. 당연히 로컬에 mysql을 설치한다. 

이때 설치하는 방법은 여러가지다. 그냥 mysql 사이트에 가서 내려받고 설치해도 되고, macOS 사용자라면 brew로 설치하기도 한다. 

단일 사용자라면 괜찮지만, 한 컴퓨터를 여러 사람이 쓰거나 서로 다른 용도로 쓸 경우 문제가 발생한다. 

 

도커Docker가 유용한 상황: 멀티 유저

예를 들어 개인 계정은 A, 회사 업무용 계정은 B라고 하자. 

A 계정에서 mysql을 brew로 설치했다. B 계정에서 brew로 뭔가 추가로 설치하려면 권한 설정 이슈가 빈번하게 발생한다. 또 서로 다른 계정인데도 데이터베이스도 함께 쓰게 된다. 물론 brew를 멀티 유저로서 문제 없게 쓰는 방법도 있지만 좀 번거롭다. 

이때 램RAM과 저장공간이 충분하다면 도커를 쓰는 게 좋다. 램이 8GB라면 추천하지 않는다. 16GB는 컴퓨터 사양과 평소 무거운 프로그램을 얼마나 돌리냐에 따라 다를 거 같다. 

 

도커로 mysql 컨테이너 만들기

일단 도커를 설치해야 한다. 운영체제에 맞게 설치한다.

설치가 끝났으면 도커를 실행한다.

 

터미널에서 아래 명령어로 mysql 컨테이너를 만들자.

$ docker run --name mysql-container \
      -p 3306:3306 \
      -h 127.0.0.1 \
      -e MYSQL_ROOT_PASSWORD=password \
      -v /Users/taptorestart/mysql:/var/lib/mysql \
      -d mysql:8.0.29

run은 실행 명령어다.

--name 컨테이너명

-p 내컴에서 접속할 포트:컨테이너 내부 포트

-h 호스트 127.0.0.1

-e 환경변수 MYSQL_ROOT_PASSWORD=password 루트 패스워드를 설정 패스워드는 password

-v 볼륨 /Users/taptorestart/mysql 디렉터리가 /var/lib/mysql와 연결 /var/lib/mysql은 mysql 데이터가 저장되는 위치

-d 도커이미지 mysql:버전 버전은 8.0.29 사용

 

명령어를 실행

docker run 실행

 

도커 컨테이너에 생성된 모습

실행하고 접속한다. password는 password다.

mysql 접속

데이터베이스와 테이블을 테스트 용도로 만든다. 

test 데이터베이스와 테이블 생성

 

앞에서 설정한 경로에 가보면 Mysql 파일을 볼 수 있다. 

mysql 파일들

 

도커 mysql 컨테이너를 삭제한다. 

도커 컨테이너 삭제

다시 위 명령어를 실행한다.

 

도커 재실행

 

다시 mysql에 접속해보면 여전히 데이터가 있는 것을 확인할 수 있다. 

 

개발 중인 API 서버 데이터베이스 설정을 

host: 127.0.0.1

user: root

password: password

로 하면 잘 작동한다.

 

비슷한 식으로 redis, postgresql 등 도커 컨테이너도 만들어서 쓸 수 있다. 

 

여러 mysql 테스트

여러 mysql을 만들어서 테스트하고 싶다면, 아래처럼 이름과 포트를 다르게 해서 만들어서 테스트하면 된다.

$ docker run --name mysql-container1 \
      -p 3307:3306 \
      -h 127.0.0.1 \
      -e MYSQL_ROOT_PASSWORD=password \
      -v /Users/taptorestart/mysql:/var/lib/mysql \
      -d mysql:8.0.29
$ docker run --name mysql-container2 \
      -p 3308:3306 \
      -h 127.0.0.1 \
      -e MYSQL_ROOT_PASSWORD=password \
      -v /Users/taptorestart/mysql:/var/lib/mysql \
      -d mysql:8.0.29

여러 mysql 컨테이너

 

반응형