Dockerize MariaDB

노력을 즐기는 사람·2021년 1월 20일
1
post-thumbnail

포트폴리오용 인스턴스들의 데이터베이스가 자꾸만 죽는다.
왜인지 도무지 모르겠다. 일단 도커화를 시켜보자.

Oracle Cloud Always Free tier, Ubuntu 18.04 기준

도커 설치

다음 커맨드들을 차례로 입력하자

$ sudo apt update 
$ sudo apt-get remove docker docker-engine docker.io
$ sudo apt install docker.io -y
$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo docker --version

docker의 버전이 정상적으로 출력되면 설치 완료

출처: https://phoenixnap.com/kb/how-to-install-docker-on-ubuntu-18-04

데이터베이스 백업

로컬 데이터베이스를 클라우드로 옮기기 위해서 백업을 한다.

$ sudo mysqldump -u{유저} -p {데이터베이스 이름} > {저장하고 싶은 파일 이름}.sql

데이터베이스 삭제

$ sudo apt remove --purge mysql* -y
$ sudo apt autoremove -y
$ sudo apt autoclean -y
$ sudo apt remove dbconfig-mysql -y

출처: https://linuxscriptshub.com/uninstall-completely-remove-mysql-ubuntu-16-04/

MariaDB 컨테이너 띄우기

다음과 같은 docker-compose.yml을 작성하자

version: "3"
services:
  db:
    image: {사용하고자 하는 이미지}:{사용하고자 하는 태그}
    container_name: {컨테이너 이름}
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "{데이터베이스 루트 유저 비밀번호}"
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ~/data/saojeong/:/var/lib/mysql 
      - ./{아까 백업한 sql파일이름}.sql:/docker-entrypoint-initdb.d/{아까 백업한 sql파일이름}.sql

volumnes 속성에 작성한 녀석들을 토대로 로컬 스토리지에 데이터를 마운트 해놓기 때문에 데이터 유실을 걱정할 필요가 없다.
또, 컨테이너가 실행되며 sql파일이 import된다.

파일 작성을 완료 했으면 docker-compose를 사용하기 위해서 설치를 해야한다

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

최신 버전은 항상 공식 문서에서 확인해주세요

설치를 완료 했으면 docker-compose.yml 파일과 {위에서 만든 백업 sql}.sql을 하나의 폴더에 넣은 후 다음 커맨드를 입력한다.

$ sudo docker-compose up -d

sudo docker ps -a을 입력해서 STATUSUp ...이 유지되면 성공이다.

profile
노력하는 자는 즐기는 자를 이길 수 없다

0개의 댓글