gradle jib 플러그인으로 이미지 빌드할 때 발생한 에러

문제상황 jib으로 프로젝트 이미지 빌드도중 발생한 에러입니다. 에러의 내용은 다음과 같습니다. > Task :jib Containerizing application to seunggison/msa-currency-exchange-app:0.0.1-SNAPSHOT... Base image 'openjdk:21' does not use a specific image digest - build may not be reproducible The system does not have docker-credential-desktop CLI Caused by: Cannot run program "docker-credential-desktop": error=2, No such file or directory The system does not have docker-credential-desktop CLI Caused by: Cannot run program "docker-credential-desktop": error=2, No such file or directory The system does not have docker-credential-desktop CLI Caused by: Cannot run program "docker-credential-desktop": error=2, No such file or directory The system does not have docker-credential-desktop CLI Caused by: Cannot run program "docker-credential-desktop": error=2, No such file or directory The base image requires auth. Trying again for openjdk:21... The system does not have docker-credential-desktop CLI Caused by: Cannot run program "docker-credential-desktop": error=2, No such file or directory The system does not have docker-credential-desktop CLI Caused by: Cannot run program "docker-credential-desktop": error=2, No such file or directory The system does not have docker-credential-desktop CLI Caused by: Cannot run program "docker-credential-desktop": error=2, No such file or directory The system does not have docker-credential-desktop CLI Caused by: Cannot run program "docker-credential-desktop": error=2, No such file or directory Using base image with digest: sha256:af9de795d1f8d3b6172f6c55ca9ba1c5768baa11bb2dc8af7045c7db9d4c33ac Executing tasks: Executing tasks: [=========== ] 35.4% complete > pushing blob sha256:96791907cbb3a871c6611df3b... > pushing blob sha256:f8a02f907a1ab530de20915a2... > pushing blob sha256:fd4dae8efc3d04714f85e9343... > checking base image layer sha256:5262579e8e45... > checking base image layer sha256:0eab4e2287a5... > checking base image layer sha256:7c002e8f6062... > launching layer pushers > scheduling building manifests > scheduling pushing container configurations > Task :jib FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':jib'. > com.google.cloud.tools.jib.plugins.common.BuildStepsExecutionException: Build image failed, perhaps you should make sure your credentials for 'registry-1.docker.io/seunggison/msa-currency-exchange-app' are set up correctly. See https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#what-should-i-do-when-the-registry-responds-with-unauthorized for help * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 7s 3 actionable tasks: 1 executed, 2 up-to-date Caused by: Cannot run program "docker-credential-desktop": error=2, No such file or directory The system does not have docker-credential-desktop CLI <- 해당 오류는 도커허브 자격증명 문제때문에 발생하는 오류입니다. ...

2024년 10월 11일 PM03:07 · PolarBear

N+1 문제 및 MultipleBagFetchException 해결하기

배경 예전에 했었던 팀 프로젝트 코드를 복기하기 위해 로컬에서 프로젝트를 돌려봤습니다. 먼저 서버를 구동시키고 포스트맨으로 회원가입, 로그인부터 시작해서 일정 생성, 조회 등등을 해봤습니다. 그런데 일정 한 건을 조회하는 api를 포스트맨으로 돌려보고 서버 로그를 보니 무려 5번의 쿼리가 작동 했습니다. 해당 api는 팀 프로젝트 당시 제가 맡은 구현파트가 아니라 다른 팀원분께서 구현을 하셨었습니다. 일정 한 건을 조회하는데 5개의 쿼리가 작동하는 것을 개선할 수 있지 않을까 생각하여 팀원분이 작성하신 코드를 보며 리팩토링을 해보기로 결심했습니다. ...

2024년 9월 20일 PM09:01 · PolarBear

JUnit5 유효성 검증 테스트 중 오류

개인 프로젝트를 진행중, 유저의 전화번호 필드 검증 테스트를 하는데 오류가 발생했다. @Import(ValidationConfig.class) class UserRepositoryTest extends TestcontainersConfiguration { @Autowired private UserRepository userRepository; @Autowired Validator validator; @BeforeEach void setUp() { userRepository.deleteAll(); } @Test @DisplayName("DB에 유저 save 실패 - 전화번호 기입 시 \"-\" 기호 미기입") void saveFailByWrongTel() { // given User user = User.builder() .nickname("sonny") .tel("01011112222") // 하이픈 미기입 .pw("1234") .email("asdfas142@naver.com") .visibility(VisibilityStatus.FRIENDS_ONLY) .build(); // when Set<ConstraintViolation<User>> violations = validator.validate(user); // then assertThat(violations).isNotEmpty(); assertThat(violations).anyMatch(violation -> violation.getMessage().equals("전화번호 형식은 XXX-XXXX-XXXX이어야 합니다.")); } } 위와 같은 테스트코드인데, User 엔티티의 tel(전화번호) 필드에 ...

2024년 7월 26일 AM09:39 · PolarBear