글쓰는 개발자

Docker mysql 설치 본문

Development/Backend

Docker mysql 설치

세가사 2024. 1. 19. 19:12
반응형
 

Windows Docker 설치

개발환경의 구축은 항상 생각보다 힘들고 복잡한 일이다. 컴퓨터에 개발 구동 환경을 구성하기 위해서 여러가지 프로그램을 설치해야 한다. 데이터베이스를 위한 mysql, 빠른 응답을 위한 redis 캐

gran007.tistory.com

 

Docker를 통해서 mysql을 설치하는 방법에 대해 알아보자.

1. docker 설치확인

cmd창을 띄워서 docker가 정상적으로 설치되었는지 다음 명령으로 확인한다.

docker -v

 

2. mysql 이미지 다운로드

mysql을 docker에 설치하기 위해서는 먼저 mysql 이미지를 다운로드 받아야 한다.

docker pull mysql

docker에 설치된 이미지는 다음 명령으로 확인가능하다. 물론 docker 프로그램에서도 바로 볼수있다.

docker images

 

3. mysql 컨테이너 생성

다운받은 이미지를 이용해 실제로 돌아가는 컨테이너를 생성해야 한다. 앞의 이미지를 설치파일이라고 한다면 컨테이너는 설치된 실행파일이라고 생각하면 된다.

docker run --name mysql -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest

-name으로 내 컨테이너의 이름을 설정할수 있고 -e 옵션으로 MYSQL_ROOT_PASSWORD의 환경변수설정이 가능하다.

-d옵션은 실행되는 container를 detach(떼어내는) 것인데 이 옵션이 사용하지않으면 바로 콘솔창에 해당 컨테이너의 실행로그를 확인할 수 있다. 

-p로 docker내부의 포트와 외부의 포트를 연결할수 있는데 이 옵션덕분에 외부에서 docker 내부에 port에 접근해서 mysql에 접속을 할수 있다.

마지막에 mysql:latest는 아까 docker pull을 통해 다운받은 이미지의 이름과 버전이다.

 

4. mysql 컨테이너 접속

이제 mysql에 직접 접근해보자. mysql은 docker 내부에 컨테이너에서 동작하고 있기 때문에 docker exec 명령을 통해 해당 컨테이너에 접속할 수 있다.

docker exec -it mysql bash

 

5. mysql 컨테이너 제거

이제 이미지를 사용해 컨테이너를 손쉽게 띄울수 있게 되었다. 컨테이너에 문제가 생기거나 초기화를 위해 제거하고 싶으면 다음 명령을 사용해 손쉽게 컨테이너를 중단하고 제거할수 있다.

docker stop mysql

컨테이너를 삭제하기 위해서는 container id가 필요한데 docker ps 명령을 통해 이 id를 확인할 수 있다.

docker ps
docker rm <docker-container-id>

 

6. docker-compose를 이용한 mysql 설치

간단히 몇가지 명령으로 docker 내부에 mysql을 설치해보았다. 하지만 mysql 같은 db의 경우 docker 내부에 온전히 설치를 했다가는 container를 삭제하는 것만으로 db 내부의 데이터가 모두 날아가버린다.

 

docker를 사용하는 중요한 이유 중 하나는 손쉬운 설치와 빠른 초기화인데 여기에 db 데이터의 초기화는 대부분의 사람이 원하지 않는다. 따라서 설정과 db에 저장되는 데이터는 외부에 따로 빼두는 작업이 필요하다.

 

docker run 명령어 실행시 -v를 이용해 볼륨을 추가해 docker container내부에 db가 저장되는 부분을 실제 내 컴퓨터에 일부분으로 지정을 할수 있는데 이런식으로 volume과 환경설정 mysql에 자잘한 옵션등을 모두 명령어 처리하다보면 실수도 발생할수 있고 무엇보다 몇번이고 반복하기 어렵다.

 

따라서 docker-compose 방식으로 이러한 설정을 모두 가진 docker container를 만들어보자.

 

먼저 docker-compose.yml이라는 파일을 만들어야 한다.

version: "1"
services:
  db:
    image: mysql:latest
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: <root-password>
      MYSQL_DATABASE: <db-name>
      MYSQL_USER: <mysql-user>
      MYSQL_PASSWORD: <mysql-password>
      TZ: Asia/Seoul
    volumes:
      - ./db/mysql/data:/var/lib/mysql
      - ./db/mysql/config:/etc/mysql/conf.d

여기에 외부 연동 port와 각종 환경정보를 모두 설정하고 내 PC 어디에 mysql db의 데이터를 저장할지 path를 입력해 준다. volumes 앞에 ./db/mysql/data가 내 현재위치 기준으로 mysql db를 저장할 폴더이다. 폴더가 없다면 해당 폴더를 생성해 준다. 아래에 ./db/mysql/config는 mysql의 설정정보가 저장될 폴더를 연결한 위치이다.

 

이렇게 docker-compose 파일을 만들었으면 docker-compose up  명령을 통해 해당 파일의 설정정보를 참고로해서 container를 생성할수 있다.

docker-compose up -d

만약 컨테이너의 이름을 설정하고 싶다면 -p 옵션을 사용해서 지정해 줄 수도 있다.

docker-compose up -p mysqldb up -d

-d옵션은 아까의 detach와 같은 역할을 한다. 해당 옵션이 없으면 container의 실행로그를 볼수 있다.

 

docker mysql container

 

반응형

'Development > Backend' 카테고리의 다른 글

Windows Docker 설치  (0) 2024.01.19
Intellij Lombok 사용하기  (0) 2019.02.19