이 레포지토리는 MSA 프로젝트의 모든 마이크로서비스 환경 설정(yml)을 중앙 관리하는 저장소입니다.
config-server가 이 레포지토리를 읽어 각 서비스에 설정을 배달합니다.
모든 설정 파일은 아래의 계층 구조를 따릅니다.
project-configs/
└── configs/ # 모든 설정은 이 폴더 내에 위치합니다.
├── common/ # 모든 서비스 공통 설정 (DB, Eureka 등)
│ ├── application.yml
│ └── application-dev.yml
└── {service-name}/ # 서비스 전용 폴더 (예: user-service)
├── {service-name}.yml (local)
└── {service-name}-dev.yml
본인의 서비스를 연결하려면 아래 규칙을 지켜주세요.
-
루트 경로에 본인의 spring.application.name과 동일한 이름으로 폴더를 생성합니다. (예: order-service/)
-
폴더 안에 {service-name}.yml 파일을 만듭니다.
-
서비스 전용 포트나 커스텀 설정을 작성합니다.
설정은 아래 순서로 읽히며, 아래쪽일수록 우선순위가 높습니다 (덮어쓰기).
-
common/application.yml
-
common/application-{profile}.yml
-
{service-name}/{service-name}.yml
-
{service-name}/{service-name}-{profile}.yml (최우선)
Git에 Push 한다고 해서 즉시 실행 중인 서비스에 반영되지 않습니다.
반영을 원하시면 해당 서비스의 Actuator Refresh 엔드포인트를 호출해야 합니다.
curl -X POST http://localhost:{서비스포트}/actuator/refresh
설정을 수정하거나 새로 추가한 후, config-server가 해당 파일을 정상적으로 읽어오는지 아래 URL을 통해 미리 확인할 수 있습니다.
- infra-repo에서
docker-compose up -d docker ps로 실행 확인- config-server 실행
- 기본 형식:
http://localhost:8888/{service-name}/{profile}/{label} - 예시 (user-service의 dev 브랜치 설정 확인):
http://localhost:8888/user-service/default/dev
주의!!!! project-configs에 push한 branch가 dev인 경우 위와 같이 합니다. 만약 다른 브랜치에서 작업하고 아직 merge 하기 전이라면 아래와 같이 합니다.
http://localhost:8888/user-service/default/{브랜치명}
출력된 JSON 데이터에서 아래 항목을 확인하세요.
propertySources: 이 배열 안에 본인이 작성한 파일 경로와 설정값들이 포함되어 있어야 합니다.version: GitHub의 최신 커밋 해시값이 찍혀 있는지 확인하세요. 만약 옛날 값이 나온다면config-server를 재시작하거나 캐시를 확인해야 합니다.- 우선순위: 배열의 앞쪽에 올수록 우선순위가 높은 설정입니다. (서비스 전용 설정 > 공통 설정 순서인지 확인)
본 레포지토리의 설정 파일(yml)에는 보안을 위해 실제 비밀번호 대신 ${DB_PASSWORD}와 같은 환경 변수 플레이스홀더를 사용합니다.
서비스 실행 시, 본인의 로컬 환경(infra-repo 내 .env 파일 등)에 설정된 실제 환경 변수값이 주입됩니다. 실제 비밀번호를 절대 이 레포지토리에 직접 기입하여 Push 하지 마세요.
-
파일명 일치: 파일명이 서비스의
spring.application.name과 다르면 config-server가 파일을 찾지 못합니다. -
YAML 문법: 공백(Space) 2칸 들여쓰기를 엄격히 준수하세요. 문법 에러 시 전체 서비스의 설정 로딩이 실패할 수 있습니다.
