[Docker] docker-compose로 mysql 컨테이너 생성 후 , 컨테이너 실행까지

mutexlocking·2022년 7월 23일
0

당근마켓 클론 코딩 프로젝트를 진행하면서 DB환경 구축에 도커를 사용하기로 했다.
도커를 사용해본 적이 없는 나는 당황하였고 ,,
생활코딩 Docker 영상과 각종 블로그들을 읽어보면서 겨우 docker-compose로 mysql 컨테이너를 설치할 수 있었다.
(docker-compose란 docker-compose.yml이라는 문서에 이렇게 컨테이너를 생성해줘! 라고 명시해 놓으면, 그대로 컨테이너를 생성해주는 docker의 기능이라고 이해하였다.)

나의 경우는 아래의 순서로 진행하였다.
(일단 docker는 설치한 이후이다.)

[1. 컨테이너를 생성할 폴더로 이동하여 docker-compose.yml 문서 작성하기]

  • 먼저 나의 경우는 아래 보이는 carrot 이라는 디렉터리에 프로젝트 관련 모든 파일을 담고 있었기 때문에 , 해당 carrot 디렉터리 안에 "docker_db" 라는 이름의 디렉터리를 생성하였다.
  • 이후 생성한 docker_db 디렉터리로 이동하여, docker-compose.yml 문서를 작성하였다.
    -> 이때 그냥 vi로 작성해도 되지만
    -> 개인적으로 visual studio code가 더 보기 좋아서,
    visual studio code로 docker_db 디렉터리를 open한 후 그 안에 docker-compose.yml 파일을 작성하였다.

  • 사실 이 docker-compose.yml 파일을 작성하기까지도 수많은 시행착오가 있었는데,
    https://velog.io/@diduya/mac에서-Docker-Compose-사용하기 이분의 글을 읽고 성공적으로 작성할 수 있었다.
  • 이렇게 docker-compose.yml파일을 작성하면서 기억해야 할 점은 , [내가 사용할 db이름이 carrot이라는 점] , [설정한 user이름], [그리고 설정한 root password] 이다.

[2. docker-compose up -d 명령어로 db_mysql 이라고 설정한 mysql 컨테이너 생성하기]

  • docker-compose.yml 파일 작성 후, 터미널에 docker-compose up -d 명령어를 치면
    아래와 같이 성공적으로 mysql 컨테이너가 생성된 모습을 확인할 수 있다 (docker ps 명령어로 확인 가능)
  • 혹은 이와 같이 docker Desktop 프로그램을 통해서도 생성한 mysql 컨테이너가 성공적으로 실행됨을 알 수 있다.

[3. (컨테이너가 설치되었으니 pc를 다시 켰다고 가정하고) mysql 컨테이너를 실행시키고 접속하기 ]
: docker exec -it db_mysql bash 명령어를 통해서 생성한 db_mysql 이라는 이름의 mysql 컨테이너를 실행시키고 -> 터미널로 접속하게 된다.
* 주의할 점은 이렇게 됬다고 해서 mysql 이 실행된게 아니라, 컨테이너 환경인 리눅스 터미널로 접속한 점이라는 것이다. 따라서 여기서 본격적으로 user 이름과 , password를 입력하여 mysql을 실행시켜야 한다.

(참고로 이 컨테이너 실행 후 접속 명령어는 https://poiemaweb.com/docker-mysql 이 글을 통해 알게 되었다.)

[4. mysql -u root -p 명령어로 mysql 서버 접속]

  • 이때 mysql -u root -p 명렁어로 mysql 서버를 접속하면 -> root 사용자로 접속하게 되니 /
    root password를 입력해야 하고
  • 내가 설정한 admin 이름을 넣어서 -> mysql -u admin -p 명령어로 mysql 서버를 접속하면
    -> 일반 사용자로 접속하게 되니 / 일반사용자 password를 입력해야 한다

  • root 사용자로 접속하든 , 일반 사용자로 접속하든
    -> docker-compose.yml 파일에 작성한 대로 carrot 데이터베이스가 생성되어 있음을 확인할 수 있다.!
  • 또한 docker-compose.yml 파일에 작성한 대로 이 데이터베이스에 쌓인 데이터는 ,
    컨테이너의 var/lib/mysql 디렉터리에 쌓이게 되고
    그 데이터가 결과적으로 mapping된 내 Mac의 carrot/docker_db/db_data 디렉터리에 쌓이게 된다.
    그래서 컨테이너가 사라지더라도 Mac에 데이터가 보관되어 안정성을 확보할 수 있다.
profile
개발자가 되고자 try 하는중

0개의 댓글