Tools/Flyway

windows 환경에서 flyway cli tool을 사용하는 방법

까뮈_b 2022. 12. 8. 11:05

이 포스트에서는 windows 로컬 환경을 기준으로 설명드리겠습니다.

 

1. 먼저, flyway 공식 홈페이지에서 flyway cli tool을 다운로드 합니다.

flyway cli tool을 다운로드 받습니다.

 

2. 원하는 위치에서 다운받은 압축파일을 해제합니다.

3.설치는 모두 끝났습니다. 이제 flyway 명령어를 global하게 쓰기 위해서 시스템 환경변수 설정을 합니다.

flyway cli 폴더의 경로를 복사해서 시스템속성 - 환경변수 - 시스템 변수 - path에 추가합니다.

 

4.  cmd 창을 열고, flyway라고 입력했을 때, 아래와 같은 flyway 명령어 안내 문구가 나온다면, 환경변수에 정상적으로 등록된 것입니다.

 

5. 이제 설정파일에서 flyway와 데이터베이스를 연동할 차례입니다.

아래와 같은 경로에 conf 파일이 하나 있습니다. 이 파일은 설정파일 견본파일입니다.

 

이 파일을 직접 수정해도 좋고, 이름을 바꾸어 따로 백업해두고, 필요한 속성만 담은 conf 파일을 생성해서 사용하여도 좋습니다. 

 

설정파일은 flyway-{version}/conf/flyway.conf 경로와 파일명을 지켜주어야 합니다.

 

6. 해당하는 파일을 열어서 url, user, password, 그리고 locations 경로를 설정해줍니다.

 

6-1. 먼저 url, user, password를 설정합니다. driver는 flyway가 url을 가지고 알아서 탐지해서 설정해주므로, 생략 가능합니다.

 

6-2. 그다음, flyway.locations 키 값에, migration script file이 위치하는 경로를 설정해줍니다.

  1. 경로는 filesystem 또는 classpath 로 시작합니다.
  2. 경로가 여러개일 경우, 쉼표(,)로 구분하여 작성합니다.
  3. application.properties에서 dbms에 따라 경로를 동적으로 라우팅할 때 {vendor}와 같은 프로퍼티 기반 설정을 사용하여 동적으로 경로를 분기할 수 있었습니다. 하지만 cli tool의 locations 설정에서는 {vendor}와 같은 프로퍼티 기반 설정은 동작하지 않습니다. 반드시 명확히 명시해주어야 합니다.

프로젝트에서 아래와 같은 migration file 패키지 구조를 가지고 있을 때, 

 

flyway.conf 에서는 아래와 같이 locations를 정의하면 됩니다.

flyway.locations=filesystem:D:\projects\flyway-pilot\src\main\resources\db\migration\mariadb, filesystem:D:\projects\flyway-pilot\src\main\resources\db\seed

 

아래는 flyway.conf에서 반드시 필요한 속성만을 모아놓은 예시입니다.

# jdbc url 경로
flyway.url=jdbc:mariadb://localhost:3306/flyway_test

# db 유저명
flyway.user=tester

# db 유저의 패스워드
flyway.password=pass111
 
# flyway migration script file을 저장할 폴더.
# 여러개를 지정할 경우 , 로 구분한다.
# filesystem 또는 classpath 로 지정한다.
# ${HOME} 또는 {vendor} 같이 property 기반 설정은 동작하지 않는다.
 flyway.locations=filesystem:D:\projects\flyway-pilot\src\main\resources\db\migration\mariadb, filesystem:D:\projects\flyway-pilot\src\main\resources\db\seed

 

이제 cmd에서 flyway info 명령어를 입력해봅니다.

info 명령어는 모든 마이그레이션에 대한 세부 정보와 적용 상태를 테이블로 보여주는 명령어입니다.

 

아래 사진과 같이 migration file 정보를 표시하는 테이블이 나타난다면, flyway가 정상적으로 db와 locations 에 접근했다는 뜻입니다.

 

info 이외에도, migration, validate 등, 여러가지 명령어를 사용해서 flyway를 조작할 수 있습니다.

 

사용할 수 있는 명령어는 공식문서 에서 확인할 수 있습니다.

 

 

지금까지 windows local 환경에서 flyway cli tool을 set up 하는 방법을 알아보았습니다.

 

감사합니다.

 

 

참조 : https://flywaydb.org/documentation/usage/commandline/#commands

https://www.lesstif.com/java/flyway-java-database-migration-framework-17105261.html