-
웹 크롤러 프로젝트 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에서 실패 오류가 떴다. 이 에러는 다음 링크에서 잘 설명되어 있다.
Intellij - error: invalid source release: 17 오류
Java 17이 LTS로 공개되었고, Spring boot도 2.5.5 버전에서 지원하고 있어 새로운 프로젝트에 Java 17을 사용하기로 했다. 그래서 start.spring.io에서 Java 17/Boot 2.5.5로 만들어서 intellij에서 바로 Run 했..
binux.tistory.com
그 다음으로 실행했더니,
- 다음과 같은 오류가 떴다. 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
[MySQL || MariaDB] 데이터베이스 접근 권한 거부 Host 'IP' is not allowed to connect to this MySQL server
Host '172.10.0.254' is not allowed to connect to this MySQL server 원인 DB를 외부에서 접속 시도시 나는 에러이다. 보안상 root 계정에 아무나 접근 할 수 없기 때문에 허용 할 IP를 지정해줘야 한다. DB 접..
java119.tistory.com
- 다음으로, kafka broker와 zookeeper를 붙여본다. 이 둘은 docker hub에서 이미지를 pulling 하여 실행을 하면 간단하게 컨테이너를 띄울 수 있다.