로컬과 배포환경 분리하기

호기성세균·2024년 5월 9일
0

Project

목록 보기
12/16
post-thumbnail

프로젝트를 진행하면서 로컬 개발 환경과 배포 환경에서 각각 다른 환경 설정이 필요하다는 것을 깨달았습니다. 이에 따라, application.yml 설정 파일을 로컬용(application-local.yml)과 개발용(application-develop.yml)으로 분리하기로 결정했습니다.

🛠️ 로컬 환경 설정 (application-local.yml)

로컬 환경에서는 개발자의 시스템에 맞춰 유연한 환경 설정이 가능하도록 .env 파일을 사용하여 환경 변수를 관리합니다. 이는 개발자가 로컬에서만 사용하는 데이터베이스 설정과 같은 민감한 정보를 안전하게 관리할 수 있도록 돕습니다.

spring:
  config:
    import: optional:file:.env[.properties]
    activate:
      on-profile: local
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${LOCAL_DB_HOST}:${LOCAL_DB_PORT}/${LOCAL_DB_DATABASE}
    username: ${LOCAL_DB_ROOT_USERNAME}
    password: ${LOCAL_DB_PASSWORD}

  jpa:
    show-sql: true
    hibernate:
      ddl-auto: update

🛠️ 개발 환경 설정 (application-develop.yml)

CI/CD 파이프라인에서는 GitHub Actions의 secrets을 사용하여 민감한 정보를 안전하게 관리합니다. 이는 프로덕션 준비 과정에서 설정의 신뢰성을 보장하고, 자동화된 환경에서의 실수를 최소화합니다.

spring:
  config:
    activate:
      on-profile: develop
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: ${DATABASE_URL}
    username: root
    password: ${DATABASE_PASSWORD}

  jpa:
    hibernate:
      ddl-auto: update

❓ 왜 이런 방식으로 설정을 분리했나요?

배포 환경: GitHub Actions secrets의 이점

  • 중앙 집중화된 관리: 모든 민감한 설정을 GitHub에서 중앙 집중적으로 관리할 수 있어, 설정 변경이 필요할 때 안전하고 빠르게 반영할 수 있습니다.

로컬 환경: .env 파일의 이점

  • 유연성: 개발자는 .env 파일을 통해 자신의 로컬 환경에 맞게 데이터베이스 연결 문자열이나 API 키 등을 설정할 수 있습니다. 이는 로컬 개발을 더욱 유연하게 만들어 줍니다.

❗️ 주의사항

  • .env 파일을 이용하기 위해서는 .env파일에서 환경변수를 주입받을 수 있도록 yml 파일에 설정을 추가해주어야 합니다.
import: optional:file:.env[.properties]
  • 개인의 민감한 정보가 들어있는 .env 파일은 깃에 올라가면 절대 안됩니다. .gitignore.env를 추가해주세요!

  • 이 프로젝트에서는 환경변수 이름은 들어있지만, 값이 들어있지 않은 .env.sample파일을 생성해 깃에 올렸습니다. 이렇게 하면 변경 사항이 있을때마다 .env파일을 주고 받을 필요 없이 개인 로컬에서 복사해 사용할 수 있습니다.

  • 프로젝트 루트 디렉토리에 .env 파일을 생성해야 합니다.

    • .env.sample 파일을 복사하여 사용하면 됩니다.
      스크린샷 2024-05-08 01 14 46
  • CI/CD 파이프라인에서 application-develop.yml파일을 이용할 수 있도록 Dockerfile에 명시해주어야 합니다.

# 환경 변수 설정
ENV SPRING_PROFILES_ACTIVE=develop
profile
공부...열심히...

0개의 댓글