본문 바로가기
Tech/DevOps

[Docker] 도커로 Mysql 컨테이너 접속하기

by 싱브이 2024. 2. 13.
728x90
반응형

docker 컨테이너에 올려져있는 mysql 로 접속해야했다.

docker에 대해 자세히는 모르던 상태라 삽질이 조금 필요했다.

 

 

1. docker-compose.yml

 

 Docker compose : 여러 개의 컨테이너로부터 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여, 관리하는 기능

도커 컴포즈 파일은 커맨드를 통해 한번에 그 파일로부터 설정을 읽어들여 모든 컨테이너 서비스를 실행시키는 것이 가능하다. 그러니까 아주아주아주 간단했다.

 

docker-compose.yml이 존재했기에 작성할필요 없이 그 파일이 있는 곳에서 바로 컨테이너에 올리는 작업을 진행하면 되었다. 

docker compose up -d

 

여기서 중요한 부분이 있다. (나는 경로문제로 몇번이고 다시 시작했었다!)

위의 커맨드를 실행하기 전 도커 컴포즈 파일을 확인해야 한다.

services:
  mysql:
    user: 501:20
    image: mysql:8.0.33
    ports:
      - 13306:3306
    volumes:
      - /Users/shinbi/dev/mysql_docker/data:/var/lib/mysql:rw
      - /Users/shinbi/IdeaProjects/backend-preonboarding/src/main/resources/initdb:/docker-entrypoint-initdb.d
    command:
      - '--character-set-server=utf8mb4'
      - '--collation-server=utf8mb4_unicode_ci'
    environment:
      MYSQL_ROOT_PASSWORD: 비밀번호
      MYSQL_DATABASE: 데이터베이스

 

여기서 volumes에 해당하는 경로로 인해 머리가 아팠었는데 그건 내가 도커를 잘 이해하고 있지 않아서 발생한거였다.

docker-entrypoint-initdb.d를 찾아가는 경로에서 git clone한 프로젝트 파일 안, 즉 docker-compose.yml 파일이 있는 곳의 경로를 지정해야한다. 이게 진짜 진짜 중요하다. 

 

더 자세한 설명은 새로운 글로 써야겠다.

 

아무튼 docker compose up -d 를 하게 되면 도커 컨테이너에 올라간다.

 

 

2. Mysql 연결하기

먼저 docker ps 명령어를 통해 실행되고 있는 도커를 확인한다. 그러면 id를 확인할 수 있다. 

그리고 그 id에 해당하는 곳으로 들어간다.

docker exec -it 도커ID bash

 

해당 bash가 열리면 mysql 에 접속한다. root로 접속 후

mysql -u root -p

도커 컴포즈 파일에 환경 변수로 정해져 있던 비밀번호로 접속한다.

그러면 mysql 로 접속할 수 있다 !!!!! 성공이다 성공

근데 나는 여기서 지정되어 있는 데이터베이스로 가서 쿼리문을 해봐야하기에 더 과정이 남았다 !

 

application.yml에 있는 database 정보를 확인하고 접속해야한다.

접속하기 위해 root에서 다른 user로 권한을 부여해준다. 진짜 끝이다 !

 

 

 

 

 

 

* 알아두면 유용한 docker 명령어

실행되고 있는 컨테이너 확인 : docker ps

삭제 : docker rm 아이디 

멈추기 : docker stop 아이디

 

 

 

 

728x90
반응형

댓글