Dev 123

[형상관리] GitHub에 잘못 PUSH한 폴더 및 파일 완전 삭제하기 (BFG 사용)

프로젝트를 진행하다가 Docker 설정 폴더를 GitHub에 실수로 Push하는 일이 발생했다.단순히 git rm으로 삭제하면 최신 버전에서는 사라지지만, 히스토리에는 그대로 남아있다.특히 설정 파일 안에 민감 정보(DB 계정, 내부 IP, Key 등)가 포함되어 있다면 반드시 히스토리까지 완전 삭제해야 한다.이번 글에서는 BFG Repo Cleaner를 이용해 특정 폴더를 Git 히스토리에서 완전히 제거하는 방법을 정리한다.1. 왜 git rm으로는 부족한가git rm -r Dockergit commit -m "remove docker folder"git push위 방법은 현재 브랜치에서만 삭제된다.하지만 Git의 과거 커밋 기록에는 Docker/ 폴더가 그대로 남아있다.즉, 누군가 이전 커밋을 조회하..

Dev/CS 2026.03.04

[CS] 메일 헤더를 분석해보자

메일 헤더(Header)란 무엇인가?메일 헤더는 "이 메일이 어디서, 누구에 의해, 어떤 방식으로 전달되었는지"를 기록한 메일의 이력서 같은 존재다. 본문은 사용자에게 보이는 영역이라면 헤더는 메일 서버와 보안 시스템을 위한 영역이다. 스팸 분석, 위·변조 판단, 발송 경로 추적 시 가장 먼저 확인하는 게 바로 이 메일 헤더다.메일 헤더 분석 가이드 (예시 헤더 기반 정리)/* ChatGPT를 통해 만든 샘플 메일 헤더입니다. */Received: from mail.example-sender.com (203.0.113.10) by mail.example-receiver.com with ESMTP; Tue, 04 Feb 2026 15:20:11 +0900Authentication-..

Dev/CS 2026.02.09

🐳 도커(Docker) 프록시 네트워크 설정

포트 직접 접근에서 프록시 네트워크 방식으로 전환한 이유기존에는 아래처럼 포트를 직접 열어서 접근했다.http://도메인:8080http://도메인:9000 이 방식은 간단하지만, 운영 환경에서는 여러 문제가 있다.포트 직접 노출 방식의 한계서비스가 늘어날수록 포트 관리 지옥방화벽, 보안 장비 설정 복잡서비스 구조가 외부에 그대로 노출HTTPS 적용 시 서비스마다 설정 필요“서비스가 많아질수록 관리 포인트가 기하급수적으로 늘어난다.”프록시 네트워크 방식이란?외부에서는 단 하나의 진입점(WEB) 만 바라보고 실제 서비스들은 Docker 내부 네트워크에서만 통신하게 만드는 구조다.외부 사용자 ↓ HTTPS[Nginx Reverse Proxy] ↓ Docker Network[서비스 / 배치 / 관리자]..

Dev/CS 2026.01.21

🐳 도커(Docker) 기본 개념과 용어 정리

도커 프로젝트를 진행하면서 관련된 단어 정리를 해보려 한다.이미지? 컨테이너? 볼륨? 다양한 용어들이 한꺼번에 쏟아져서 어렵게 느껴졌지만 막상 두들겨보니 일상에서 익숙한 예시를 찾게되어 알기 쉽게 정리해 보았다.도커란?도커는 ‘애플리케이션을 실행하는 데 필요한 것을 한 번에 담아 어디서든 똑같이 실행할 수 있게 해주는 기술’도커 이미지(Image) = 🍱 밀키트도커 이미지는 애플리케이션 실행에 필요한 모든 것을 담아놓은 설계도 + 재료 세트 밀키트레시피손질된 재료양념조리 순서도커 이미지OS 기반 환경라이브러리실행 파일설정 값밀키트는 아직 요리된 상태가 아니고,도커 이미지도 아직 실행된 상태가 아니다.컨테이너(Container) = 🍳 실제로 조리된 요리컨테이너(Container)는 도커 이미지를 실제..

Dev/CS 2026.01.20

Docker 관리 도구(Portainer) 도입 시 겪은 시행착오 정리

운영 중인 서버에서 Docker 기반 서비스가 늘어나면서 컨테이너 상태와 리소스를 직관적으로 확인할 수 있는 관리 도구의 필요성을 느끼게 되었다. 이에 Docker 관리 UI 도구인 Portainer 도입을 검토했고 그 과정에서 겪은 시행착오와 최종 판단을 정리해본다.1 .기존 운영 환경현재 서버는 다음과 같은 Docker 컨테이너가 운영 중인 상태였다.nginx: 외부 요청 및 SSL 처리Spring Boot 웹 서비스RedisDaily Scheduler모든 서비스는 Docker Compose로 관리되고 있으며, 운영 서버 특성상 기존 서비스에 영향을 주지 않는 것이 최우선 원칙이었다.2. Portainer 도입 목적실행중인 컨테이너 상태 확인리소스 사용량 모니터링로그 확인 및 컨테이너 관리 편의성 향..

Dev/Docker 2026.01.16

Docker 컨테이너 로그 기본 정보와 관리하는 방법

1. 작업 배경운영 중인 서버에 서비스들을 Docker 컨테이너로 신규 구성하면서 로그가 파일로 남지 않고 docker logs 명령어에서만 확인되는 현상을 발견했다.docker logs -f - 애플리케이션은 정상 동작- 콘솔 로그는 확인 가능하지만 서버 디렉토리에는 로그 파일 생성x 처음에는 애플리케이션 로그 설정 문제로 판단했으나, 확인 결과 이는 Docker 기본 로그 동작 방식 때문이었음.2. Docker 컨테이너 로그의 기본 동작 방식도커에서 별도의 설정을 하지 않으면 로그는 아래와 같이 처리된다.기본 로그 드라이버json-file (Docker 기본값)로그 수집 대상표준 출력 (STDOUT)표준 에러 (STDERR)즉, Spring Boot 애플리케이션의 콘솔 로그는 파일이 아니라 Dock..

Dev/Docker 2026.01.15

[SpringBoot] Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

제목과 같이 오류가 발생한 사유는 Database에 연결할 때 필요한 정보가 없기 때문이다.초기 세팅 후 DB 설정하기 전까지는 아래 예시 코드와 같이 설정하고, DB 설정 후 원복해주자.// 수정 후package com.text.notify;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; // 추가@SpringBootApplication(exclude={DataSourceAutoConfiguration..

Dev/Spring&Java 2026.01.12

[Tomcat] SERVER: Error processing requestjava.lang.NullPointerException

하나의 Tomcat 인스턴스에서 여러 개의 웹 애플리케이션을 운영하다 보면, 그중 일부 홈페이지를 운영 중단(폐기) 및 추가해야 하는 경우가 생긴다.이때 단순하게 소스 폴더만 삭제하면 톰캣 로그에 NullPointerException 등의 오류가 반복적으로 발생할 수 있다.server.xml을 수정 후 아래와 같은 에러가 1분 정도 간격으로 반복되어 출력되었다.서비스나 기능적인 측면 문제는 없지만 불필요한 로그가 지속적으로 쌓이다보니 해결 방법을 찾게 되었다.org.apache.coyote.http11.AbstractHttp11Processor processSEVERE: Error processing requestjava.lang.NullPointerException원인server.xml에 정의된 def..

Dev/Linux 2025.10.22