도커를 이용해 데이터베이스(mysql + redis) 실행 환경을 쉽게 설정 하는 법을 알게되었고
세부적인 내용을 정리하기 위해 작성한 포스트
Docker는 리눅스 컨테이너 기술을 기반으로 하는 오픈 소스 소프트웨어 플랫폼이다.
(컨테이너를 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장 할 수 있는 플랫폼)
컨테이너는 여러개의 어플리케이션을 단일
호스트에서 구동하기 위한 개념이다.
컨테이너는 Cgroup
와 namespace
와 같은 커널 기반의 기술을 이용해서 프로세스를 완벽하게 격리하여 분리된 환경을 만들고 실행하도록 해줌
각각의 VM과 Container는 서로 다른 환경을 구성해 준다.
이들의 차이점을 알아보자
VM
Container
이미지출처: SKplanet Tacademy
동일한 서버를 구성하고 서버 운영 로그를 남기기 위해 사용
도커는 도커 파일을 통해 실행 시점과 관계없이 동일한 구성의 서버를 운영할 수 있게 해준다
(도커 파일이 서버 운영 기록이라면, 도커 이미지는 운영 기록을 실행할 시점)
도커파일을 통해 서버 코드화
가 가능하고 이는 아래와 같은 장점을 가진다.
docker-compose란?
# docker-compose.yml (mysql + redis 2개의 컨테이너)
version: "3.7" # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 ( 컴포즈에서 컨테이너 : 서비스 )
db: # 서비스 명
# platform: linux/x86_64 #왼쪽 라인은 M1 맥북사용시 추가할 것
image: mysql:5.7 # 사용할 이미지
restart: always
environment: # -e 옵션
MYSQL_DATABASE: 'DB이름넣기'
MYSQL_USER: 'user명 넣기' #ex)'user'
MYSQL_PASSWORD: 'password넣기'
MYSQL_ROOT_PASSWORD: 'rootPassword넣기' # MYSQL 패스워드 설정 옵션
TZ: Asia/Seoul
command: #명령어 실행
- --lower_case_table_names=1 #mysql 대소문자 구별
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
container_name: mysql-test # 컨테이너 이름 설정
ports:
- "3306:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부) <- 컨테이너 내부는 무조건 3306
volumes:
- /Users/Shared/data/mysql-test:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)
redis:
image: redis:latest
ports:
- '6379:6379'