EC2 환경에서 Spring 프로젝트에 환경변수 적용하기

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