* Docker-Desktop을 이용해 MySQL DBMS를 실행
프로젝트 진행 중 도커에서 레디스와 mysql 설치 과정에 대해서 정리할려고 한다.
일단 나는 도커를 사용해 DB를 사용할려고 한다. 왜 도커를 사용해서 디비를 사용하냐고 물어보면
도커(Docker)를 사용하는 이유는 무엇일까? (velog.io)
이 분의 글을 읽으면 좋을 것 같다. 협업 과정에서 고충을 겪을 환경설정의 문제를 해결해준다는 점!
그럼 첫 번째는 MySQL 설치부터 할 것이다.
아래에 있는 각 단계를 따라오면 된다.
도커에서 mysql을 사용하기 위해서 할 일은 다음 4가지이다.
- Windows를 모두 업데이트 한다.
- Hyper-V(가상화) 또는 WSL2를 이용해 설치를 한다.
- Windows 버전에 따라서 설치가 어려울 수도 있다. (Home버전?)
- Docker-Desktop을 설치한다. → 설치만 ! 실행은 나중에
1. 도커 설치
- Windows용 Docker-Desktop 다운로드
Docker Desktop: The #1 Containerization Tool for Developers | Docker
도커에서 제공해주는 메뉴얼도 있다.
Install Docker Desktop on Windows | Docker Docs
2. Hyper-V(가상화) 또는 WSL2를 이용해 설치
- 나는 윈도우에서 사용중이라 이 과정을 걸쳤다.
- 윈도우 검색에서 “기능”이라고 입력하면 윈도우 기능 켜기/끄기가 보여진다.
- 여기에서 ‘Hyper-V’ 또는 ‘Windows 하이퍼바이저 플랫폼’을 선택한다.
- Hyper-V는 하이퍼바이저(Hypervisor)라고 한다. 하이퍼바이저는 단일 물리적 머신에서 여러 가상 머신을 실행하는 데 사용할 수 있는 소프트웨어이다.
- 선택 → 확인 → 윈도우를 재시작
- 하이퍼바이저가 실행되려면 BIOS에서 가상화 관련된 옵션이 사용가능해야한다.
- PC마다 BIOS메뉴 구성은 다를 수 있다.
- 자신의 메인보드 이름으로 구글에서 검색한다.
- 보통 BIOS는 컴퓨터가 켜지기 전 DEL , F2 키를 빠르게 입력하면 진입 가능하다. 컴퓨터마다 진입 버튼은 다를 수 있으니 찾아봐야 함
3. WSL2 설치
- 관련메뉴얼이다
WSL 설치 | 마이크로소프트 런 (microsoft.com)
- Windows의 PowerShell을 관리자 권한으로 실행 후 아래 명령어 2줄을 입력해서 WSL을 활성화 한다.
# WSL2 설치
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 이후 윈도우를 재시작한다.
3.1. WSL2 Linux 커널 업데이트
- 본인 PC의 CPU 아키텍처에 맞춰 설치 파일을 다운로드 한다. 보통 x64용
x64 : https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
ARM64 : https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi
- Windows의 PowerShell을 관리자 권한으로 실행 후 다음 명령어 실행
# WSL2 Linux 커널 업데이트
> wsl --set-default-version 2
WSL2 명령 모음
# 사용가능한 Linux 배포판 리스트 보기
> wsl --list --online
# 특정 리눅스 배포판 설치하기 (Linux를 사용해보고 싶으면 나중에 설치해보기)
> wsl --install --distribution <Distribution Name>
# ex
> wsl --install --distribution Ubuntu
# 설치된 Linux 배포판 리스트
> wsl --list --verbose
# 특정 리눅스 배포판 삭제하기
> wsl --unregister <Distribution Name>
# ex
> wsl --unregister ubuntu
3.2 도커 실행
- 이전에 다운로드한 Docker Desktop Installer.exe 파일을 실행하면 WSL2 환겨에서 실행할 것인지 묻는 checkbox가 보일 수 있다. (권장)
- WSL은 Hyper-V 기반이 아닌데, WSL2는 Hyper-V 기반 !
- 설치 완료 후, PC를 재시작한다.
- 이후, docker-desktop을 실행하면 처음 보여지는 화면 동의(Accept)한다.
- 첫 번쨰 항목을 선택하고 Finish 버튼을 클릭한다.
- 윈도우가 재시작할 때 docker desktop이 자동으로 재시작되길 원한다면 첫 번째 체크박스를 설정한다. (Start Docker Desktop when you sign in to your computer)
3.3 WSL에 설치된 배포본을 확인
- wsl에 docker-desktop이 설치된 것을 확인할 수 있다.
- docker-desktop을 설치하고 실행하면 WSL2에 docker가 제공하는 리눅스가 설치된다.
- 이 리눅스가 docker-desktop이며, docker로 실행되는 이미지들은 해당 리눅스 커널 위에서 동작한다고 보면 된다.
# WSL에 설치된 배포본 확인
> wsl --list --verbose
3.4 MySQL DBMS를 실행하기 위한 docker-compose.yml 파일을 준비
- Windows 10
- c:/docker/mysql 폴더에 docker-compose.yml 파일을 작성
- docker-compose.yml
version: "2"
services:
vacation-db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: "루트계정암호" # "root1234"
MYSQL_DATABASE: "database이름" # "examplesdb"
MYSQL_USER: "아이디" # "dms2756"
MYSQL_PASSWORD: "암호" # "123456789"
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- ./database/init/:/docker-entrypoint-initdb.d/
- ./database/datadir/:/var/lib/mysql
platform: linux/x86_64
ports:
- 3306:3306
3.5 docker-compose up -d
- yml 파일이 있는 곳에서 터미널을 열고 MySQL 서버를 실행하는 명령어를 입력한다.
# MySQL 서버 실행
> docker-compose up -d
- -d 옵션은 백그라운드로 실행하는 옵션이다.
- 파일 내 volumes 설정은 Docker 안에서 실행되는 리눅스의 /docker-entrypoint-initdb.d/ , var/lib/mysql 폴더가 docker-compose.yml 파일이 원래 있는 경로에 database 폴더를 생성하고, 그 아래의 init, datadir 에 생성되도록 한다.
- 원래 docker는 종료되면 docker에서 실행된 내용들은 모두 사라진다.
- 이렇게 docker를 실행하는 컴퓨터 쪽의 디스크와 마운트 시킴으로써 사라지지 않고 계속 사용할 수 있게 할 수 있다.
- # docker-compose.yml의 일부 volumes: - ./database/init/:/docker-entrypoint-initdb.d/ - ./database/datadir/:/var/lib/mysql
docker-compose.yml 파일이 있는 경로
- docker-compose.yml 파일이 있는 곳에 database 폴더가 있는 것을 볼 수 있다.
- 해당 폴더 안에 mysql의 data가 저장된다.
- docker-compose down 명령을 실행하면 mysql 서버가 종료된다. database 폴더를 삭제하고 다시 실행하면 모든 데이터가 삭제된다. (주의)
- docker ps 명령으로 실행되는 이미지에서 container id를 복사 후 mySQL 이미지에 접속한다.
> docker ps
# mysql 접속
> docker exec -it {복사한conainterID} /bin/bash
그럼 끝났다.
* Docker-Desktop을 이용해 Redis를 실행
위의 과정을 통해 도커가 설치되어 있다는 가정 하에 아래를 진행한다.
1. 도커 폴더 아래 redis 폴더를 생성한다.
2. redis 폴더 아래 docker-compose.yml 작성한다.
services:
redis:
image: redis:latest # 최신 Redis 이미지를 사용
container_name: redis
command: ["redis-server", "--requirepass", "{password}", "--appendonly", "yes"]
ports:
- "6379:6379" # 로컬의 6379 포트를 Redis 컨테이너의 6379 포트에 매핑
volumes:
- ./redis-data:/data # 로컬의 'redis_data' 볼륨을 컨테이너의 /data 디렉토리에 매핑하여 데이터 영속성 유지
volumes:
redis-data:
3. 터미널을 열어서 아래의 명령어를 입력한다.
# 레디스 이미지 가져오기
> docker pull redis
# 이미지 가져왔는지 확인
> cker images
# 레디스 실행
> docker compose up -d
> docker ps
# 레디스 컨테이너 접속
> docker exec -it {레디스 컨테이너 아이디} redis-cli
# 레디스 암호
> AUTH {password}
# 모든 키 검색
> KEYS *
# 키 값 출력
> KEYS refreshToken:*
# 해당 키에 대한 값 출력
> GET {키 값}
# 해당키의 유효 시간 출력
> TTL {키 값}
# 해당키 삭제
> DEL {키 값}
그럼 레디스도 잘 설치될 것이다.
'Spring > Spring Boot' 카테고리의 다른 글
Spring : 알림 기능 구현 종류 (0) | 2024.08.28 |
---|---|
Spring : S3 이미지 업로드 구현 (0) | 2024.08.23 |
Spring 이메일 인증 기능 구현하기 2 : 비밀번호 찾기 (0) | 2024.08.20 |
Spring 이메일 인증 기능 구현하기 1편 : 회원가입시 이메일 인증 (0) | 2024.08.20 |
SpringJPA : 영속성 컨텍스트, 엔티티 매핑, @OneToMany, @ManyToOne (1) | 2024.06.21 |