내가 겪은 상황은 SpringBoot 는 1.4.1 버전을 사용중이었고, log4j 보안문제때문에 2.17.0 으로 변경했을때 나타난 문제이다. 일반적으로 NoSuchmethodError 의 경우는 버전이 변경되면서, 해당 메소드의 인자 갯수나 타입이 변경될때 나타나는 경우가 일반적이다. 그래서 이땐 해당 버전을 맞춰주면 보통 해결이 된다. 16:14:54.829 [main] ERROR org.springframework.boot.SpringApplication - Application startup failed java.lang.NoSuchMethodError: org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(Lorg..
내가 겪은 케이스는 A 클러스터환경에서, B 클러스터에 붙을수 있도록 nameservice 를 추가후, B클러스터에 붙을때 나타났던 현상이다. 베이스가 되는 hadoop config 은 커버로스 인증을 써야하는 형태로 세팅이 되어있다보니, 인증이 없는 클러스터를 접속하려고 할때, 다른 두 환경에서 세팅이 충돌난 문제이다. A 하둡 클러스터 (커버로스 인증필요) B 하둡 클러스터 (인증 없음) 예를 들면, 오류메시지는 아래와 같다. # ----------------------------- # A 클러스터 접근 (커버로스 인증 필요) # ----------------------------- $ kinit -kt /user1/airflow/airflow.keytab airflow@AHADOOP.MYHOME.C..
pip 를 통해 패키지를 설치하려고 했는데, 다음과 같이 오류가 나는 상황이 존재한다. 결론부터 말하면, 버전이 너무 오래되서 8.1.2 에서 22.2.2 로 바로 업데이트를 못하는 상황이다. 변경사항이 너무 많기 때문에, 과거버전에서 바로 업데이트하는것이 미지원 되는걸로 보인다. $ sudo pip install --upgrade pip Collecting pip Downloading https://files.pythonhosted.org/packages/4b/30/e15b806597e67057e07a5acdc135216ccbf76a5f1681a324533b61066b0b/pip-22.2.2.tar.gz (2.0MB) 100% |████████████████████████████████| 2.0MB 5..
통합 테스트를 하려고 했는데, MYSQL 의존성이 있어서 세팅이 필요한 경우가 있다. 가장 가볍게 구성하려면, Docker 를 이용하는게 가장 손쉬운것 같다. docker 를 이용해서 mysql 8 버전을 띄우고, 외부접근 가능한 계정까지 만들어 보자. 1. docker 를 통해 mysql 기동하기 docker 가 설치되어있다면 아주 간단한 명령어로 기동이 가능하다. docker pull mysql:8.0.22 docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=암호 -d -p 3306:3306 mysql:8.0.22 만약, 프로세스가 종료되도 db의 데이터가 유지되어야 한다면 볼륨마운트를 해야한다. (안그러면 컨테이너 종료하면 사라짐) 실행할 때 -v ..
windows 용 도커데스크탑을 설치하고, 명령어 프롬포트로 간단히 docker 프로세스 상태 확인 명령어를 날려보면 아래와 같은 오류가 발생한다. 이 상태는 docker 를 사용하기위한 세팅이 마무리 안되었기 때문이다. C:\Users\gildong>docker ps error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified. 상황파악하기 작업표시줄에 도커아이콘이 보..
Docker 기반으로 실행되는 기능을 사용할때 꼭 알아야할 간단한 명령어를 알아야 활용하기 좋다. 가장 기초적인 명령어를 알아보자 1. 이미지 목록확인 로컬에 받아진 도커 이미지를 확인하는 명령어이다. 처음 설치했다면 아래와 같이 아무것도 조회가 안된다. $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE 2. 이미지 가져오기 (pull) docker-registry 에 올려진 도커 컨테이너 이미지를 로컬로 가져오는 명령어이다. 기본적으로는 docker hub 의 이미지를 사용하기 때문에, 여기서 가져올땐 "이미지:버전" 만 기입하지만, 별도의 private docker reigistry 를 사용할때는 도메인이나 아이피를 지정해야하는 차이가 다르다. $ dock..
회사에서 private-docker-registry 를 구성해서, 딴 서버에서 컨테이너 이미지를 땡겨오려고 했는데 다음과 같은 오류가 발생했다. 신기한건 도메인을 써도 아이피를 써도 동일하게 안되는 현상이 있었다. $ docker pull docker-registry.myinfra.com:5000/sample:0.1 Error response from daemon: Get "https://docker-registry.myinfra.com:5000/v2/": http: server gave HTTP response to HTTPS client 해결방법 /etc/docker/daemon.json 파일을 추가해서 private docker registry 의 ip, domain 정보를 추가후 재기동하면 해결되..
docker 를 사용하다보면 내가 필요한 이미지를 만들어야 하는 경우가 생기고, 이 컨테이너 이미지를 업로드해서 사용해야할 상황이 발생된다. 여기서는 간단히 빌드를 하고, 이걸 private docker registry 에 업로드 하는 간단한 흐름을 정리해보겠다. (인터넷에서는 너무 조각내용으로 있어서 큰그림을 이해하기 어려운듯 하여 정리) 1. Dockerfile 우리가 개발할때 maven 은 pom.xml 에 빌드가 정의되고, gradle은 build.gradle 에 정의 되는것처럼 docker 컨테이너 이미지를 빌드할때 구성하는 파일은 Dockerfile 이라는 이름으로 구성을 한다. 아래내용은 로컬에 있는 readme.txt 파일을 컨테이너안에 복사하고, wget 모듈을 설치하는 간단한 샘플이다...