Closed minjun3021 closed 1 year ago
All modified lines are covered by tests :white_check_mark:
Comparison is base (
c4ba6df
) 84.63% compared to head (fdb2d0e
) 84.63%.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
./gradlew bootRun (default프로필은 local) ./gradlew bootRun -P spring.profiles.active=local (프로필 =local) ./gradlew bootRun -P spring.profiles.active=dev (프로필 =dev)
@ParkJeongseop 해당 브랜치 리뷰 부탁드립니다.
그리고 Open-docs 에러도 확인 후 해결 부탁드려요.
아마 config값 달라져서 docker-compose에서 재대로 못 불러와서 생기는 문제일듯하네요
docker-compose로 실행하는경우는 어떻게실행하나요? 그리고 컨플릭트 해결부탁드려요
docker-compose up
명령어로 실행될때 local config file
을 잘 받도록 수정 필요해보이네요.
docker-compose.yml
파일 수정 (argument 등 키워드로 검색 부탁드립니다)아마 이거 수정하면 Generate OpenAPI Docs 정상 동작할듯합니다.
build:
args:
SPRING_PROFILES_ACTIVE: local
api:
environment:
SPRING_PROFILES_ACTIVE: local
현재 docker-compose.yml에 두곳을 수정하면 프로필과함께 실행가능합니다. 이 작업 자체는 얼마 안걸렸으나 몇가지 시도를 해봤었는데
docker-compose.yml에 직접 작성하지않고 build할때 arg를 직접 전달하는 방법을 시도해보았는데 dockerFile에서 ENV를 지정해줬음에도 불구하고 런타임시에 적용이 안되어 되게 해보려다가 결국 실패.
[시도해본것]
FROM openjdk:17-jdk-slim as builder COPY gradlew . COPY settings.gradle.kts . COPY build.gradle.kts . COPY gradle gradle COPY src src RUN chmod +x ./gradlew ARG SPRING_PROFILES_ACTIVE RUN echo $SPRING_PROFILES_ACTIVE RUN ./gradlew clean bootjar -Pspring.profiles.active=$SPRING_PROFILES_ACTIVE RUN java -Djarmode=layertools -jar build/libs/*.jar extract
FROM openjdk:17-jdk-slim as runtime COPY --from=builder dependencies/ ./ COPY --from=builder snapshot-dependencies/ ./ COPY --from=builder spring-boot-loader/ ./ COPY --from=builder application/ ./
ENV SPRING_PROFILES_ACTIVE=$SPRING_PROFILES_ACTIVE ENTRYPOINT ["java","-Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}", "org.springframework.boot.loader.JarLauncher"]
docker-compose.yml에는 프로필 관련 정보를 안적은 상태에서 이렇게 Dockerfile을 작성하고 docker-compose build --build-arg SPRING_PROFILES_ACTIVE="dev" 이 명령어를 실행시키면 빌드자체는 해당 프로필의 리소르와 함께 빌드가 잘됩니다 그런데 docker-compose up을 했을때 runtime시에 ${SPRING_PROFILES_ACTIVE}를 못찾는거같습니다
도커를 잘아시는분있으면 조언 부탁드려요 @junha-ahn @ParkJeongseop
그래도 generate open docs는 실패하네요. 뭘까요
일단 이 문제에 대한 부분은 이런것 같습니다.
yaml 파일에서 build
아래 컨피그 값은 실제로 docker-compose build 나 up을 할때 이미지를 빌드하는 과정에 주입되는 값입니다.
RUN ./gradlew clean bootjar -Pspring.profiles.active=$SPRING_PROFILES_ACTIVE
이때 사용하는 값인거죠그리고 environment 밑에 있는 컨피그 값은 해당 이미지로부터 컨테이너가 실행될때 주입되는 값이죠
따라서 build 밑에 컨피그는 스프링앱이 빌드할때, 즉 local properties 파일을 포함해서 빌드되도록 하는 역할 enviroment 밑의 컨피그는 spring runtime에 주입하는 값
제 개인적 추축입니다. (따로 자료조사하진않았습니다)
테스트해보실려면 build 밑의 컨피그의 키 이름과 Dockerfile에서
ARG
에서 사용하는 키 이름을 동시에 변경해보세요.
What is this PR?
Key Changes
application설정 파일 타입 변경 .properties -> .yaml TestController 비활성화 -> test profile일때만 활성화 되게 함
yml 장점 계층적인 데이터 구조를 쉽게 표현할 수 있음. 들여쓰기를 이용해 구조를 명확하게 나타낼 수 있으므로, 복잡한 설정도 명확하게 표현할 수 있음. yml 단점 들여쓰기에 민감하여, 들여쓰기가 잘못되면 의도한대로 동작 하지 않을수있음.
Test Checklist