-
웹 크롤러 프로젝트 docker-image 빌드하기Back-End/Docker 2022. 4. 11. 15:24728x90
- 이제 크롤러를 docker 컨테이너화를 해 볼 것이다.
- 먼저 docker desktop (데몬) 실행 해서 빌드 하려는데, 오류가 뜬다.
FROM openjdk:17-jdk-alpine
- 해당 이미지를 pull 하는 과정에서 오류가 떠서, build시 추가 옵션을 줬더니 해결됐다. 내 맥북이 m1칩을 사용해서, 인텔의 아키텍쳐가 아닌 arm 아키텍쳐를 사용해서 그런 것이었다.
- 다음으로, build를 통해 jar 파일을 만든다.
./gradlew build
일단 먼저 gradlew파일에 권한을 주어야 한다. chmod +x gradlew 명령어로 권한을 주고 실행하면
- 다음과 같이 compileJava에서 실패 오류가 떴다. 이 에러는 다음 링크에서 잘 설명되어 있다.
그 다음으로 실행했더니,
- 다음과 같은 오류가 떴다. test코드에서 실패한 부분이 있으므로..나의 개인적인 문제였다.
- 그 다음으로, build 가 성공하면 build/libs에 jar가 생성되는데, 이를 intellij에서 실행하면 Error creating bean with name 오류가 떴다. 생성자에 사용하는 빈이 등록이 되지 않아서 생기는 문제였는데, 자세히 알아보니 spring-data-jpa 라이브러리를 compileOnly 옵션으로 넣어주어서 그랬다. 그래서 implementation으로 고쳐서 해결했다.
- 빌드가 되는 것을 확인했으니 이를 기반으로 docker 컨테이너화 하고, mysql도 함께 컨테이너화 하는 docker-compose.yml을 작성 해 본다.
- 계속 수정해도 안 되서, 뭐가 문제인지 봤더니 jar파일을 빌드 하고, 이를 docker image로 빌드하지 않아서 계속 compose에서 오류가 났던 것이었다.ㅠㅠ
- 추가로, Access denied for user ‘’@’172.17.0.1'(using password: YES) 오류가 떴는데, 이는 IP 허용 문제였다. 다음 링크 참조해서 해결했다.
https://java119.tistory.com/61
- 다음으로, kafka broker와 zookeeper를 붙여본다. 이 둘은 docker hub에서 이미지를 pulling 하여 실행을 하면 간단하게 컨테이너를 띄울 수 있다.