최대 1 분 소요

Java Web Application with Spring and Hibernate (13)

/ Docker /

  • H2 메모리 데이터에서 탈출을 위해 도커를 사용한 MySQL를 사용해보기
  • 도커를 설치한 후 아래의 명령어 실행
docker run --detach --env MYSQL_ROOT_PASSWORD=dummypassword --env MYSQL_USER=todos-user --env MYSQL_PASSWORD=dummytodos --env MYSQL_DATABASE=todos --name mysql --publish 3306:3306 mysql:8-oracle
  • 위 코드로 가상환경으로 MYSQL 알아서 생성해줌

pom.xml

<!--       <dependency>-->  
<!--         <groupId>com.h2database</groupId>-->  
<!--         <artifactId>h2</artifactId>-->  
<!--         <scope>runtime</scope>-->  
<!--      </dependency>-->

<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.28</version> <-- 추가하니 작동됨
		</dependency>
  • 이전 H2 삭제하고 mysql 추가
  • 이렇게 해도 계속 오류가 나서 이것 저것 찾아보고 메이븐도 클린 빌드 하고 진짜 별에별 짓은 다했는데 버전을 써놓으니까 해결 (심지어 도커랑 정확히 맞는 버전도 아님..)
    • 윈도우 문제인지 내 노트북 문제인지는 모르겠음…

application.properties

#spring.datasource.url=jdbc:h2:mem:testdb

spring.jpa.hibernate.ddl-auto=update  
spring.datasource.url=jdbc:mysql://localhost:3306/todos  
spring.datasource.username=todos-user  
spring.datasource.password=dummytodos  
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
  • url 에 대해서 http가 아닌 jdbc를 사용 jdbc:mysql://localhost:3306/todo

정리

  • 이전에 연습용으로 실행했던 h2도 결국 메모리에 저장하는 방식이라 서버를 껐다 키면 모든 내용이 날라간다
  • 처음에 MySQL을 로컬로 이용했는데 이번에는 도커를 사용해서 연결해서 연결했다.
  • 단순히 연결해서 쉽게 사용하는데 있어서 MySQL을 로컬로 설치해서 사용하는 것보다 도커를 이용하는게 훨씬 편하고 빠르고 쉬운거 같다.

댓글남기기