자동 배포를 위해 github action + code deploy + nginx 로 특정 action마다 자동배포가 되게 설정해보았다.
https://github.com/Jionee/autodeploy_practice
BUT, 문제가 발생한다. 배포를 위해 github에 올린다면 모두가 우리의 secret 정보를 볼 수 있고 그러면 보안에 심각한 위협이 된다는 것!
데이터베이스의 엔드포인트, username, password 등이 그 타깃이 될 수 있다.
따라서 이를 어떻게 숨길 수 있는지에 대해 살펴 보겠다.
간단히 말하면
//설명
* dev 개발시에는 testdb(h2)를 사용한다. + common,secret(기타 공통으로 숨겨야 할 내용)
* prod 배포시에는 proddb(mysql)을 사용한다. + common,secret(기타 공통으로 숨겨야 할 내용)
나의 경우는 총 4가지를 사용하였다.
#profile의 그룹을 설정한다. 예를 들면 dev로 run 환경을 설정하면 testdb, common, secret이 실행된다.
spring:
profiles:
group:
"local": "testdb,common,secret"
"dev": "testdb,common,secret"
"prod": "proddb,common,secret"
---
#공통적으로 설정되어야 할 내용들을 작성한다.
spring:
config:
activate:
on-profile: "common"
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
show_sql: true
format_sql: true
logging:
level:
org:
hibernate:
type:
descriptor:
sql: trace
spring.config.activate.on-profile="proddb"
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/각자db이름?validationQuery="select 1"
spring.datasource.username=각자유저네임
spring.datasource.password=각자비밀번호어쩌구
spring.config.activate.on-profile = "testdb"
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url= jdbc:h2:tcp://localhost/~/각자db이름
spring.datasource.username=각자유저네임
spring.datasource.password=각자비밀번호어쩌구