source

DOKER Spring Boot에 env 변수 전달

nicesource 2023. 7. 8. 10:57
반응형

DOKER Spring Boot에 env 변수 전달

나는 SpringBoot 어플리케이션을 가지고 있으며, 그것의 Docker 파일은 다음과 같습니다.local/dev/qa/prod와 같은 다양한 환경에 대한 application.properties가 있습니다.애플리케이션을 IDE에서 로컬로 실행할 때 VM 옵션에서 -Dspring.profiles.active=local을 전달하여 application-local.properties를 로드합니다.도커 컨테이너로 실행하기 위해 모든 application.properties로 구성된 이미지를 구축합니다. 즉, 모든 환경에서 동일한 도커 이미지입니다.

환경에서 이미지를 실행할 때 어떻게든 SpringBoot을 생성하여 개발 환경을 파악하고 싶으므로 application-dev.properties를 로드해야 합니다.저는 컨테이너 관리를 위해 AWS ECS를 사용하고 있습니다.

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/sample-test-sb-sample-app-1.0-exec.jar app.jar
EXPOSE 8080
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

도커 컨테이너의 환경 변수를 통해 이 작업을 수행하는 가장 쉬운(그리고 아마도 가장 좋은 방법일 것입니다.

SPRING_PROFILES_ACTIVE=dev,swagger

업데이트:

환경 변수를 도커로 설정하기 위해 도커 파일을 수정할 필요가 없습니다.도커 이미지를 빌드한 다음 환경 변수 집합을 사용하여 실행하기만 하면 됩니다.

docker run your-docker-container -e SPRING_PROFILES_ACTIVE='dev,swagger' -p 8080:8080

에서.도커 파일:

ENTRYPOINT [ "sh", "-c", "java -Dspring.profiles.active=**${ENV}** -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

도커를 실행하는 동안:

docker run --env ENV=*local* -d -p 8080:8080 <*image id*>

이렇게 하면 컨테이너를 불러올 때 환경 변수가 로컬 값으로 지정되고 Docker 파일로 전달됩니다.

갱신하다

다음과 같이 할 수도 있습니다.

ENTRYPOINT ["java","-jar", "-Dspring.profiles.active=${ENV} -Djava.security.egd=file:/dev/./urandom","app.jar"]

그리고 도커 이미지는

docker run --env ENV=local -d -p 8080:8080 <*image id*>

언급URL : https://stackoverflow.com/questions/46715072/passing-env-variables-to-docker-spring-boot

반응형