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
'source' 카테고리의 다른 글
엔티티 프레임워크가 ID 열을 삽입하도록 강제하려면 어떻게 해야 합니까? (0) | 2023.07.08 |
---|---|
eplus를 사용하여 Excel 테이블의 행을 반복하려면 어떻게 해야 합니까? (0) | 2023.07.08 |
Angular Material 2 테이블 서버 측면 페이지 (0) | 2023.07.03 |
dplyr을 사용한 data.frame의 전체 사례 필터(대소문자별 삭제) (0) | 2023.07.03 |
집계 프레임워크에서 전체 타임스탬프가 제공될 때 날짜별로 집계하는 방법은 무엇입니까? (0) | 2023.07.03 |