[Docker] 도커 MySQL 컨테이너 접속하는 법

 

도커 MySQL 컨테이너 접속법

 

 

도커를 통해 MySQL 컨테이너를 생성하는 경우 MySQL에 직접 접속하여 설정해야하는 상황이 있다.

 

또는 DB 내부에 제대로 값이 입력되는지 확인하는 등 다양한 상황에서 DB에 접속해야하는 경우가 발생한다.

 

이때 도커 컨테이너로 열려있는 DB이기 때문에 어떻게 접속하는지 모르는 사람들이 많은데 그 방법에 대해 말해보고자 한다.

 

본인은 다음과 같은 docker-compose.yml 과 Dockerfile을 통해 생성한 환경에서 테스트한다.

 

 

docker-compose.yml

version: '3'

services:
  app:
    container_name: app
    build: ../
    restart: always
    ports:
      - '8080:8080'
    depends_on:
      - database-mysql

  database-mysql:
    container_name: docker-database-mysql
    image: mysql/mysql-server:8.0

    environment:
      MYSQL_ROOT_PASSWORD: '1234'
      MYSQL_ROOT_HOST: '%'
      MYSQL_DATABASE: 'dockerdb'
      TZ: Asia/Seoul

    volumes:
      - ./db-mysql:/var/lib/mysql

    ports:
      - '3306:3306'

    command:
      - '--character-set-server=utf8mb4'
      - '--collation-server=utf8mb4_unicode_ci'

 

Dockerfile

FROM openjdk:11-jre-slim-buster

VOLUME /tmp

ARG JAR_FILE="build/libs/*.jar"

COPY ${JAR_FILE} app.jar

ENV PROFILE dev

ENTRYPOINT ["java", "-Dspring.profiles.active=${PROFILE}", "-jar","/app.jar"]

 

스프링부트와 MySQL8.0 을 함께 사용하기 위한 설정 파일들이다.

 

docker-compose.yml을 보면 알 수 있듯이 mysql의 password는 1234이다.

 

이제 이 mysql에 접속해야하는데 어떻게 해야할까?

 

 

docker exec -it MySQL컨테이너명 bash

우선 CMD를 열고 다음과 같은 명령어를 수행한다.

 

해당 컨테이너를 bash 쉘로 접속하겠다는 명령이다.

 

 

mysql -u root -p
(패스워드 입력)

그리고 접속한 MySQL 컨테이너에서 다음과 같은 명령어로 db에 접속하면 된다.

 

mysql -u root -p 까지 입력하고 엔터를 누르면 패스워드 입력창이 나타나는데 거기서 본인이 설정한 password를 입력하면된다.

 

위에 docker-compose.yml을 보면 알 수 있듯이 본인의 경우 1234로 설정해주었기 때문에 1234를 입력하면 접속이 가능했다.

 

 

mysql에 접속된 모습