Git best practice

Git best practice

이유 vfor문이 실행 된 후 vif문이 실행되기 때문에, if문 조건에 따라 분기처리 되는게 아니라 for문을 도는 모든 요소을 다. 거치게 됩니다. 해결 computed에서 for문을 돌릴 배열을 만들어 그 값을 vfor로 사용합니다.


imgCaption0
Build in Docker

Build in Docker

지금까지는 Dockerfile 외부에서 빌드를 하고, 빌드된 결과만을 복사해서 쓰는 계획을 살펴봤습니다. 그렇게되면 빌드조차 각 사용자의 영향을 받는다. 빌드 명령어를 각자 다양하게 입력 아니면 빌드 환경이 달라진다 따라서, spring boot 빌드 자체도 Dockerfile에 녹이는게 좋습니다. 이로써 받는 장점은 다음과 같다. 빌드까지 따로 할 필요가 없으니, 하나의 Dockerfile로 진정한 이미지가 완성됩니다.

CI 도구와 통합할 필요가 없습니다.. (연동할 필요가 없습니다.. ) 빌드 명령어 또한 형상관리가 가능합니다. Dockerfile을 작성하면 다음과 같다.

Spring boot Layer

위에서는 직접 jar정보를 압축을 풀고 layer를 만들었다면, spring boot 2.3.0 이상부터는 layer를 기능을 지원합니다. java Djarmodelayertools jar target.jar extract destination targetextracted

위처럼 jar를 layertools 모드로 extract하면 자동으로 layer가 분리됩니다.

Gradle Cache

gradle build를 CI 도구를 사용하는 것이 아닌, Docker image build 내부에서 하기 때문에 단점이 하나 생기는데, 바로 gradle cache를 활용하지 못한다는것입니다. Docker image build가 어떻게 이뤄지는지 알면 gradle 캐시를 적용하기가 왜 어려운지 알 있습니다. 위에서 계속 언급했듯이 Docker image build는 하나의 컨테이너가 띄어져서 수행되는 것이 아닌, 여러번의 임시컨테이너를 거쳐서 레이어를 쌓는 형식으로 빌드가 이뤄진다.

따라서, 일반적으론 gradle cache 저장소를 호스트와 마운트해서 저장할 방법이 없습니다.. 이와 비슷한 사안을 해결하기 위해 대부분 2가지 방법이 존재합니다.

자주 묻는 질문

Build in

지금까지는 Dockerfile 외부에서 빌드를 하고, 빌드된 결과만을 복사해서 쓰는 계획을 살펴봤습니다. 자세한 내용은 본문을 참고하시기 바랍니다.

Spring boot

위에서는 직접 jar정보를 압축을 풀고 layer를 만들었다면, spring boot 2. 더 알고싶으시면 본문을 클릭해주세요.

Gradle Cache

gradle build를 CI 도구를 사용하는 것이 아닌, Docker image build 내부에서 하기 때문에 단점이 하나 생기는데, 바로 gradle cache를 활용하지 못한다는것입니다. 더 알고싶으시면 본문을 클릭해주세요.