도커 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를 입력하면 접속이 가능했다.