목록2024/11 (9)
ㅇ.ㅇ
상황스프링부트 새 프로젝트를 설치한 후 run을 실행했을 때, 아래와 같은 에러가 발생하였다. 에러 내용 starting gradle daemon... gradle daemon started in 2 s 158 ms failure: build failed with an exception. * what went wrong: multiple build operations failed. could not move temporary workspace 에러 파악Gradle 빌드 시스템에서 발생하였다. 에러에서 알 수 있는 주요 문제점은, Gradle이 임시 작업 공간을 불변 위치로 이동하는데 실패했다는 것이다. 나의 시행착오..Gradle 캐시 폴더 삭제 후 빌드 다시 실행C:\Users\사용자\.gradl..
최근에 BiFunction을 사용해 볼 기회가 있었는데 관련 내용을 좀 더 찾아보다가 ToIntBiFunction과 함께 비교해보면 좋을 것 같아 이렇게 정리를 해보려고 한다. 우선 두 인터페이스는 둘 다 Java의 함수형 인터페이스로서, 두 개의 입력 값을 받아 하나의 출력 값을 반환하는 기능을 한다. 가장 큰 차이점은 반환값의 타입이 다르다는 점이다.1. BiFunction다양한 결과를 반환할 수 있는 다목적 함수형 인터페이스BiFunction는 두 개의 입력 값(T, U)을 받아 원하는 타입(R)의 결과를 반환한다.R 타입은 제한이 없기 때문에, 문자열, 숫자, 객체 등 무엇이든 반환할 수 있다.// 메서드 시그니처R apply(T t, U u);// 예시: 두 숫자를 문자열로 합치는 작업BiFun..
회사에서 작업하던 MyBatis 쿼리에서 처음 보는 형식의 쿼리를 발견했다. 내용을 살펴보니 JSON 연산자와 관련된 부분이었다. 현재 회사 DB에서는 리소스의 세부 속성들을 props라는 컬럼에 JSON 형태로 그대로 저장하고 있었고, 이 JSON 데이터를 추출하는 데 이 연산자가 사용되고 있었다. 이번 기회에 JSON 데이터를 다루는 필요성과 함께 PostgreSQL과 Oracle의 JSON 처리 방식을 정리해 보려고 한다. 1. JSON 데이터 처리의 필요성 JSON은 현대 애플리케이션에서 데이터 교환과 저장에 널리 사용되는 포맷이다. 유연한 구조와 가독성 덕분에 REST API, 웹 애플리케이션, 데이터베이스 등 다양한 환경에서 중요한 역할을 한다. PostgreSQL과 Oracle은 JSON ..
lazydocker란?lazydocker는 Docker와 Docker Compose 환경을 효율적으로 관리하기 위한 터미널 기반 인터페이스이다. 이 도구는 명령어 입력 없이 Docker 환경을 직관적으로 모니터링하고 제어할 수 있도록 설계되었다. 그러므로 Docker 환경에서 자주 작업하는 개발자들에게 특히 유용하다. lazydocker 설치 방법다양한 방법이 있다. 나는 초반에는 도커 이미지로 설치했다가 생각보다 메모리를 많이 잡아먹는 것 같아서 바이너리로 다시 설치하였다. 여기에서는 바이너리 설치 방법으로 적어보겠다. 1. 바이너리 파일 다운로드먼저, lazydocker 바이너리 파일을 자신이 원하는 운영체제, 버전으로 다운로드한다. lazydocker GitHub : https://github.c..
Docker 임시 파일 및 빌드 캐시 안전하게 정리하는 방법Docker에서 작업을 지속하면서 tmp 파일이나 빌드 캐시가 쌓여 용량을 차지하거나 비정상적인 데이터를 포함할 수 있다. 우선 나 같은 경우에는 tmp쪽에 용량이 없다는 에러 메시지가 나와서 용량이 큰 이미지를 pull 받을 수 없었다. 그럼 이러한 파일들을 정리하고, 시스템 공간을 확보하는 방법을 알아보자. 1. 사용하지 않는 컨테이너, 네트워크, 볼륨, 이미지 정리아래 명령어는 모든 불필요한 리소스를 삭제할 수 있다.-- (1) 사용하지 않는 컨테이너 정리docker container prune-- 중지된 상태의 모든 컨테이너를 삭제 -- (2) 사용하지 않는 네트워크 정리docker network prune-- 사용되지 않는 모든 네트워크..
개발 작업을 하다 보면, Docker 컨테이너에서 로그 파일이나 설정 파일을 추출해야 할 때가 있다. 그럼 그 내부 파일들을 호스트로 꺼내오는 방법은 무엇일까? 1. 컨테이너 셸에 접근먼저 컨테이너의 셸에 접근하려면, docker exec 명령어를 사용해야 한다. docker exec 명령어는 실행 중인 컨테이너 내에서 새로운 명령을 실행할 수 있다. 예를 들어, Bash 셸에 접근하고자 할 때는 다음과 같은 명령어를 사용한다.docker exec -it [컨테이너ID 또는 이름] /bin/bash 2. 컨테이너 내부에서 파일 전송 컨테이너 내부에서 파일을 호스트로 전송하거나, 호스트에서 컨테이너로 파일을 전송하려면 docker cp 명령어를 사용할 수 있다. 호스트와 컨테이너 간 파일을 복사하려면 다음..
상황docker-compose.yml 파일에 postgres:13 이미지를 추가하고 컨테이너 구동 했으나, 다음과 같은 에러가 발생. 에러Postgres container failing with initdb error: program "postgres" is needed by initdb but was not found. 원인위 에러는 postgres:13 이미지가 Docker 19 버전과의 호환성 문제로 인해 발생하는 것으로 보임. postgres:13 이미지가 최신 운영 체제와 패키지 호환성을 위해 업데이트된 환경을 사용하면서, Docker의 특정 버전에서는 필요한 패키지나 파일 경로가 다르거나 누락되어 이 문제가 발생할 수 있음. 해결 과정 이미지 버전을 postgres:13에서 postgres..
상황Docker 버전 19.x를 사용하는 CentOS 서버에서 특정 tomcat 공식 이미지를 컨테이너로 구동하였을 시 해당 에러 발생 에러Tomcat 9 running on docker - Cannot find /usr/local/tomcat/bin/setclasspath.sh 원인이 에러는 Docker 19의 오래된 libseccomp 버전이 최신 Tomcat 이미지에서 사용하는 시스템 호출을 인식하지 못해 발생하는 호환성 문제이다. 최신 Tomcat 이미지는 최신 Linux 커널과 libseccomp 버전에서 제공하는 새로운 시스템 호출을 사용하지만, Docker 19 버전에서는 이를 지원하지 못해 필요한 파일(/usr/local/tomcat/bin/setclasspath.sh)을 찾지 못하는 문제..
상황해당 에러 발생 전에 꺼져있던 방화벽을 켰는데, 그 이후로 Docker 컨테이너 실행 할 때 아래의 에러 발생. 에러Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-eb84ca430943 -j RETURN: iptables: No chain/target/match by that name. 원인 방화벽 서비스(firewalld)가 활성화되거나 재시작될 때 iptables 규칙을 재정의하면서 기존 Docker 관련 체인(DOCKER 체인)이 삭제될 수 있다. Docker는 네트워크 트래픽 관리를 위해 iptables의 고유 체인을 사용하므로, 방..