Spring Boot 포트 충돌 에러 해결법 총정리
Spring Boot 포트 충돌 에러 해결법 총정리
📌 Spring Boot 실행 시 '포트 충돌'이란?
Spring Boot 애플리케이션을 실행할 때 "Port already in use" 또는 "Address already in use" 에러를 본 적 있으신가요? 이는 기본 포트인 8080
이 이미 다른 프로세스에 의해 사용 중일 때 발생하는 일반적인 오류입니다.
🧭 목차
1. 포트 충돌의 원인
Spring Boot는 기본적으로 8080
포트를 사용합니다. 그러나 같은 포트를 사용하는 다른 서버나 백그라운드 프로세스가 이미 실행 중이라면, 새롭게 실행된 애플리케이션은 해당 포트를 사용할 수 없어 오류가 발생합니다. 이 경우 다음과 같은 상황일 수 있어요:
- 이미 실행 중인 Spring Boot 애플리케이션이 있음
- 로컬에서 Tomcat, Jenkins 등의 다른 서버가 8080 포트를 점유 중
- 다른 개발 툴 또는 데몬 프로세스가 백그라운드에서 동작 중
이러한 문제를 해결하기 위해 가장 먼저 시도할 수 있는 방법은 Spring Boot의 포트를 변경하는 것입니다. 다음 단계에서는 구체적인 설정 방법을 살펴보겠습니다.
2. 포트를 변경하는 방법
Spring Boot에서 포트를 변경하는 가장 간단한 방법은 application.properties
또는 application.yml
파일을 수정하는 것입니다.
✅ application.properties 사용 시
server.port=8081
위와 같이 설정하면 애플리케이션이 8081 포트에서 실행되며 기존 충돌을 피할 수 있어요.
✅ application.yml 사용 시
server:
port: 8081
개발 중에는 원하는 임의의 포트로 지정하여 테스트 환경을 안정적으로 유지할 수 있습니다.
💡 명령줄에서 일시적으로 포트 변경
별도의 설정 파일을 수정하지 않고 실행 시점에 포트를 임시로 변경할 수도 있어요:
./mvnw spring-boot:run -Dspring-boot.run.arguments=--server.port=8082
이 방식은 빠르게 테스트하거나 여러 인스턴스를 실행할 때 유용합니다.
3. 포트를 사용 중인 프로세스 확인 및 종료
포트 충돌이 발생했다면 어떤 프로세스가 해당 포트를 사용하고 있는지 먼저 확인해야 합니다. 운영 체제에 따라 다음 명령어를 사용할 수 있어요.
🔍 Mac/Linux: 포트 8080 사용 중인 프로세스 찾기
lsof -i :8080
결과에서 PID
값을 확인하고, 해당 프로세스를 종료할 수 있습니다.
kill -9 [PID]
🔍 Windows: 포트 사용 확인
netstat -ano | findstr :8080
PID를 확인한 후 작업 관리자(Task Manager)에서 프로세스를 찾아 종료하거나, 다음 명령어를 사용할 수 있어요:
taskkill /PID [PID] /F
이처럼 포트를 사용 중인 프로세스를 종료하거나, 포트 번호를 변경하는 방식으로 충돌 문제를 해결할 수 있습니다.
이제 포트를 조정하거나 프로세스를 종료하여 충돌 문제를 해결했다면, 그 외 자주 묻는 질문들과 실무 팁을 살펴보는 것이 좋습니다. 다음 섹션에서 함께 알아볼게요.
4. 자주 묻는 질문과 실무 팁
❓ Q1. 매번 포트를 바꾸는 게 번거로운데 자동화할 수 없나요?
네, 가능합니다. 개발 환경에서는 포트를 매번 수동으로 지정하는 대신, application-dev.properties
파일을 활용하여 프로파일별로 포트를 분리해두는 방법이 있어요.
# application-dev.properties
server.port=8083
그리고 실행 시 다음처럼 dev
프로파일을 지정하면 됩니다:
--spring.profiles.active=dev
❓ Q2. 여러 개의 Spring Boot 애플리케이션을 동시에 실행하려면?
각 애플리케이션에 고유한 포트를 할당하면 동시에 실행할 수 있어요. 예를 들어 8081
, 8082
, 8083
등으로 포트를 나눠 실행하면 충돌 없이 테스트 가능합니다.
🧠 실무 꿀팁: 포트 자동화 스크립트 사용하기
Shell Script나 배치 파일을 이용해 실행 시 자동으로 포트를 지정하는 방법도 있습니다. 예를 들어, 랜덤 포트를 할당하는 스크립트를 만들어 테스트 자동화를 구성할 수 있어요:
#!/bin/bash
PORT=$(( ( RANDOM % 1000 ) + 8000 ))
./mvnw spring-boot:run -Dspring-boot.run.arguments=--server.port=$PORT
📈 향후 예측: Spring Boot의 포트 유연성 강화
Spring Boot는 앞으로 더 유연한 포트 매핑과 컨테이너 기반의 실행을 기본으로 할 가능성이 높습니다. 예를 들어 Docker 컨테이너 내에서 실행되면, 외부 포트와 내부 포트를 매핑하는 구조가 일반화될 것으로 보입니다:
docker run -p 8080:8080 my-spring-app
따라서 포트 충돌은 향후 점점 드물어질 수 있지만, 개발 초기에는 여전히 발생할 수 있기 때문에 포트 관련 설정에 익숙해지는 것이 중요해요.
마지막으로 이번 글을 정리하고, 주요 키워드를 태그로 정리해볼게요.
🧩 결론
Spring Boot 포트 충돌은 초보 개발자뿐 아니라 숙련된 개발자에게도 빈번히 발생하는 문제입니다. 하지만 원인을 정확히 파악하고, 적절한 대응 방법을 익혀두면 단 몇 초 만에 해결할 수 있어요.
가장 중요한 것은 현재 어떤 포트가 사용 중인지 파악하는 능력과 포트를 유연하게 설정할 수 있는 습관</strong입니다. 더불어 프로파일 기반 설정, 명령줄 실행, 자동화 스크립트 등 다양한 방법을 숙지해두면 실무에서 생산성을 더욱 높일 수 있어요.
🏷️ 태그
Spring Boot, 포트 충돌, 포트 변경, 서버 설정, 개발자 팁, 서버 오류, application.properties, 서버 포트 변경