MySQL에서 Data Export해서
프로젝트에 필요한 자료들 초기화
volume으로 mount해서
컨테이너와 호스트 시스템 간에 데이터를 쉽게 공유하고 지속성을 유지
1. 도커 buildContext( 폴더 ) 세팅
C:\dockerTest\mysql01 로 할꺼임
하위 폴더로 data폴더, init_db폴더 만들어줌

init_db폴더
db초기화 자료, MySQL Workbench의 Data Export에서 export한 데이터들 있음
도커 컨테이너의 /docker-entrypoint-initdb.d 폴더로 복사할꺼
도커파일에서 ADD ./init_db/* /docker-entrypoint-initdb.d
data폴더
도커 컨테이너의 /var/lib/mysql 와 volume으로 연결할꺼
컨테이너에있는 데이터가 그대로 반영됨, 컨테이너 삭제해도 데이터 남음
docker run할때, -v C:\dockerTest\mysql01\data:/var/lib/mysql
도커 컨테이너의 /docker-entrypoint-initdb.d 폴더
이 디렉토리에 있는 스크립트들을 컨테이너 시작 시 자동으로 실행하여 초기 데이터베이스 설정이나 데이터베이스 초기화 작업을 수행
도커 컨테이너의 /var/lib/mysql 디렉토리
MySQL 데이터베이스의 데이터 파일이 저장되는 기본 경로
MySQL 서버가 데이터를 저장하고 관리하는 주요 위치
2. Dockerfile 구성
C:\dockerTest\mysql01에 도커파일 생성
FROM mysql:8.0
ENV MYSQL_USER user
ENV MYSQL_PASSWORD user
ENV MYSQL_ROOT_PASSWORD root
ADD ./init_db/* /docker-entrypoint-initdb.d
./init_db/ 디렉토리에 있는 모든 파일을 도커 컨테이너의 /docker-entrypoint-initdb.d 디렉토리로 복사
3. 이미지 빌드
도커 데스크탑 실행해서, 도커 킨다음에
cmd에서 C:\dockerTest\mysql01로 이동후
docker build -t mysql-image .
4. 컨테이너 실행
docker run --name mysql-container -d -p 3307:3306 -v C:\dockerTest\mysql01\data:/var/lib/mysql mysql-image
호스트의 포트 3307을 컨테이너의 포트 3306에 매핑
( 3306은 호스트 MySQL이 사용중 )
도커데스크탑 - 해당컨테이너에서
bind mounts에 C:\dockerTest\mysql01\data 경로 잡힘

C:\dockerTest\mysql01\data에 여러 파일들 생김( 이걸 어떻게 다뤄야할까, table은 IBD파일 인듯 )
컨테이너에서 폴더 구조랑 파일들 볼수 있음

5. 컨테이너에서 mysql접속후 데이터 확인, insert로 추가
도커데스크탑 - 해당 컨테이너 - Exec에서 했음

초기화 한 테이블과 데이터들 잘생성되었음
mysql - u root -p
show databases;
use jap_test
show tables;
이후 select문으로 확인
아직 못한거, 더 해볼만 한거
컨테이너에서 데이터 조작한거 data폴더에 제대로 반영됐는지 확인하고싶었는데 못함
( volume제대로 동작하는지 확인 )
컨테이너 삭제후에도 , 컨테이너에서 조작된 데이터들 보존되는지 확인해보고 싶었음
MySQL워크벤치로 컨테이너의mysql 접속해보려 했는데 못함
'Web Development > Docker' 카테고리의 다른 글
| 도커로 SpringBoot + MySQL 띄우기 (0) | 2024.06.14 |
|---|---|
| docker build 에서 "빌드 컨텍스트" (0) | 2024.06.14 |
| SpringBoot프로젝트 도커컨테이너로로 실행하기 (1) | 2024.06.12 |
| 도커 파일 ~ 컨테이너 실행 (0) | 2024.06.12 |
| 도커로 개발환경 구축 (0) | 2024.06.10 |