All Articles

Docker Compose MySQL Instance

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 인스턴스를 내리면 될 것 같다. 나중에.. 이어서 진행할 수 있기를.