728x90
반응형
0. 이 글을 쓰는 이유
평온하게 개발을 하던 중 환경에 따라 동적으로 flyway의 sql파일에서 값을 변경하여 넣어줘야 할 일이 생겼다. 다른 곳들은 뭐 @Value로 잘 가져오면 괜찮던데 Flyway는 딱 하나가 달라서 리마인드 겸 정리를 해보고자 한다.
1. 사건의 발단
proxy table(db link)를 위해 외부 ip를 가져와야하는데 flyway는 모든 프로파일에 걸쳐 동작을 하고 외부 database ip는 각 상황(dev, live)등에 따라 고정값이지만 다른 값이었다. 그러면 믿을 수 있는 부분은 application의 properties파일이고 어떻게 가져와야 할까
create table tmp_table(
//중략
) engine=CONNECT table_type=MYSQL dbname=host_database tabname=data_app connection='mysql://admin:password@${host-db-ip}';
2. 결론
flyway에는 placeholders라는 부분이 있다.
기본적으로는 아래와 같이 쓴다.
flyway:
enabled: true
baseline-on-migrate: true
url: jdbc:mysql://localhost:3306/~~~~~~~
user: 아이디
password: 패스워드
여기에 placeholders를 추가한 후 밑에 자유롭게 속성을 추가하면 된다.
flyway:
enabled: true
baseline-on-migrate: true
url: jdbc:mysql://localhost:3306/~~~~~~~
user: 아이디
password: 패스워드
placeholders:
host-db-ip : 1.2.3.4:3306
3. 공식 문서
역시 공식 문서가 최고긴 하다.
https://flywaydb.org/documentation/configuration/placeholder
728x90
반응형
'JAVA > spring' 카테고리의 다른 글
spring method 요청에 대해 핸들링하기 (0) | 2023.03.13 |
---|---|
spring boot 최소한으로 logging 설정하기(logback을 곁들인) (0) | 2023.03.12 |
spring(boot)의 예외 처리 방식 (0) | 2023.02.24 |
[QueryDSL] BooleanExpression말고 Predicate[]로 조건을 동적으로 처리하기 (0) | 2023.02.11 |
자바 ORM 표준 JPA 프로그래밍 - 기본편 끄적끄적 (1) (0) | 2023.01.15 |