오늘의 인기 글
최근 글
최근 댓글
Today
Total
11-15 01:02
관리 메뉴

우노

[Docker] MySQL Container 실행 시 host db 볼륨 마운팅하기 본문

DevOps/Docker

[Docker] MySQL Container 실행 시 host db 볼륨 마운팅하기

운호(Noah) 2020. 11. 18. 18:00
  • 테스트를 진행할 서버는 EC2이며, Docker가 설치되어있다고 가정하겠습니다.

db 디렉토리 생성

  • 서버에 db 디렉토리 생성

      mkdir mysql-init-files
  • 로컬에 있는 db 파일을 서버의 db 디렉토리로 복사

      scp -i [pem파일경로] [로컬 파일 경로] [ec2-user계정명]@[ec2 instance의 public DNS]:~/[서버 파일 경로]

MySQL Container 생성 및 db 볼륨 마운트

  • MySQL 이미지 다운로드

      docker pull mysql
  • 컨테이너 생성 시 서버의 db 디렉토리와 볼륨 마운트

      docker run -d -p 3306:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=1234 -v ~/mysql-init-files/:/docker-entrypoint-initdb.d/ --restart="always" mysql
    • -d
      • 백그라운드모드로 실행
    • -p 3306:3306
      • host의 3306 포트를 container의 3306 포트로 매핑한다는 뜻이다.
    • --name mysql-container
      • 컨테이너 이름을 지정한다.
    • -e MYSQL_ROOT_PASSWORD=1234
      • root 비밀번호를 생성한다.
      • mysql 컨테이너 내부에서 mysql에 접속할 때 사용된다.
      • 이 단계는 필수이므로 요구 조건을 만족하는 비밀번호를 입력 할 수 있도록 한다.
    • -v ~/mysql-init-files/:/docker-entrypoint-initdb.d/
      • 호스트의 ~/mysql-init-files/ 디렉토리를 컨테이너의 /docker-entrypoint-initdb.d/ 디렉토리로 마운트한다.
      • /docker-entrypoint-initdb.d/ 안의 파일들은 컨테이너 실행 시 mysql로 dump 된다.
    • --restart="always"
      • mysql로 db가 dump 되면 컨테이너가 한 번 종료되기 때문에
      • 컨테이너가 종료되면 다시 실행시켜준다.

db dump 결과 확인

  • kleagueDB-SchemaData.sql 확인

      docker exec -it mysql-container bash
    
      mysql -u root -p
    
      show databases;

Comments