우아한테크코스

수업 따라하기 (Gradle 프로젝트에 Docker로 mysql 접속)

더즈 2022. 3. 30. 11:48

최상단 directory 하위에 docker directory를 생성

하위에 docker-compose.yml 파일 생성

version: "3.9"
services:
  db:
    image: mysql:8.0.28
    platform: linux/x86_64
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: practice
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      TZ: Asia/Seoul
    volumes:
      - ./db/mysql/data:/var/lib/mysql
      - ./db/mysql/config:/etc/mysql/conf.d
      - ./db/mysql/init:/docker-entrypoint-initdb.d

.gitignore에 도커 관련 파일 추가

### Docker ###
docker/db/mysql/data/
docker/db/mysql/init/*
!docker/db/mysql/init/init.sql

docker directory에서 cmd로 아래 명령어 실행

NOTE@DESKTOP-N9VOSQK MINGW64 /c/woowacourse/level1/jdbc-practice/docker
$ docker-compose -p practice up -d
  • docker-compose : yml 파일의 이름
  • -p : 프로젝트 
  • practice : 지정한 프로젝트 이름
  • up : 애플리케이션을 실행하겠다는 의미
  • -d : 터미널이 아니라 백그라운드에서 프로그램을 실행하겠다는 의미

docker directory 하위에 yml 파일 외에도 뭔가 파일들이 생겼다. mysql 구동을 위해 필요한 파일들이다. (테이블 등등)

컨테이너 확인(실행 중인 image)

$ docker ps

practice-db-1이라는 녀석이 올라와 있는걸 확인할 수 있다.

실행 중인 컨테이너에 CMD 전달하기

$ docker exec -it practice-db-1 bash

위 명령어를 입력하면 무언가를 입력해야 한다. # 뒤로 mysql을 유저는 root로, 비밀번호는 root로 접속한다는 뜻이다. (yml 파일 설정대로, -p와 비밀번호 사이에 띄어쓰기는 하지 않는다.)

root@f1c284c0f339:/# mysql -u root -proot

그럼 mysql 서버에 접속할 수 있다.

데이터베이스 확인 및 사용

show databases;

practice를 확인할 수 있다. 이제 use priactice; 명령어를 통해 해당 데이터베이스를 사용하면 된다.

 

자바 프로그램에서 mysql을 쓰려면 JDBC API가 필요하고, 이를 구현한 mysql만의 JDBC 구현체가 필요하다.

build.gradle에 의존성 추가

runtimeOnly 'mysql:mysql-connector-java:8.0.28'