1. 쉘 스크립트(start.sh)를 이용한 배포
- .env 에 설정한 값이 application.yml과 매핑됨
1. .env에 환경 변수 저장
export DB_URL="mysql://user:password@host:port/db_a"
export SECRET_KEY="secret_key"
2. 프로젝트 실행할 때 로드되도록 start.sh에 스트립트 작성
source /home/ubuntu/.env
3. echo로 적용된 환경변수 확인
echo $DB_URL
4. 소스코드에서 환경변수 사용
- application.yml
spring:
datasource:
url: ${DB_URL}
jwt:
secret-key: ${SECRET_KEY}
- JwtUtil.java : @ConfigurationProperties 이용
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@ConfigurationProperties(prefix = "jwt") // application.yml의 jwt 설정을 매핑
public class JwtUtil {
private String secretKey;
public String generateToken(String username) {
return Jwts.builder()
{... 생략}
.signWith(SignatureAlgorithm.HS256, secretKey) // 환경 변수 사용
.compact();
}
}
2. Docker를 이용한 배포
- .env에 설정한 값이 docker-compose.yml의 환경 변수와 매핑됨
더보기
@ docker-compose.yml
💡 docker-compose.yml
- Docker 컨테이너를 정의하는데 사용됨
- application.yml은 docker-compose.yml을 참조하여 애플리케이션을 설정
docker-compose.yml 작성
services:
environment:
- DB_URL=${DB_URL}
두 가지 다 환경변수를 변경하는 경우 애플리케이션 재시작이 필요한 정적 방식이다
'Infra > Deploy' 카테고리의 다른 글
Systemd로 service 실행/배포하기 (0) | 2025.02.23 |
---|