1년 6개월 정도 진행했던.. 서비스를 종료하게 되었다. 따라서.. 백업을 하기로 했는데, MySQL을 노트북에 깔았더니 느려지는 기분이 들어서 Docker compose로 진행하기로 했다.
Docker Compose?
도커는 Container 기반의 가상화 기술이다. 도커의 단점은 그 사용성이 하나의 인스턴스를 다루는 것에 있다는 것이다. 여러개의 인스턴스를 관리하는데에 도커는 불편함이 많다. 이런 단점을 개선하고자 나온것이 yml 기반의 멀티 인스턴스를 관리할 수 있는 docker-compose 이다.
Let’s get it!
도커는 이분 사이트에서 배웠다. 가장 빨리 만나는 Docker
# docker-compose.yml
version: ‘3.3’
services:
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: ‘db’
MYSQL_USER: ‘root’
MYSQL_PASSWORD: ‘mysql’
MYSQL_ROOT_PASSWORD: ‘mysql’
ports:
- 3306:3306
expose:
- 3306
volumes:
- ./mysql:/var/lib/mysql
# 시작하기
## 콘솔을 닫으면 종료된다.
$ docker-compose up
## 혹은 데몬모드로 실행한다.
$ docker-compose up -d
# log 보기
## 로그를 계속 본다. tail -f랑 같은 기능. compose의 모든 로그를 본다.
$ docker-compose logs -f
## compose 에서 db 서비스의 로그를 계속 본다.
$ docker-compose logs -f db
# 종료하기
$ docker-compose down
DockerCompose 파일 분석
- version: compose 포맷 버전. 버전마다 문법이 조금씩 다르다.
- services: 컨테이너들 모음? 이라고 생각하면 편하다.
- image: 컨테이너를 띄우기 위한 부모 이미지 혹은 설계도 라고 생각하면 편하다.
- environment: 컨테이너에서 사용하기 위한 환경변수.
- ports: 사용할 Port와 외부에 바인딩할 port 번호.
- expose: 외부에 포트를 노추할 때 사용하는거 같은데, 혹시 몰라서 넣어봤다.
- volumes: 도커는 컨테이너에 데이터가 저장되기 때문에, 컨테이너가 내려가면 데이터가 사라진다. 이를 호스트 PC와 동기화 하여 저장하는 개념이 volume이다.
더 진행해야 할 작업
이제 도커로 인스턴스를 띄웠으니 유저 추가하고, 데이터베이스 생성하고, 데이터 백업하고 AWS 인스턴스를 내리면 될 것 같다. 나중에.. 이어서 진행할 수 있기를.