1. 개요
백엔드(Spring Boot)와 프론트엔드(React)를 동시에 개발할 때 가장 번거로운 부분은 개발 환경을 일관되게 유지하는 것입니다.
특히 다음과 같은 문제가 자주 발생합니다.
- 개발자마다 환경이 다름
- Node / Java 버전 차이
- API 연결 문제
- CORS 문제
- 실행 순서 문제
이 문제를 해결하는 대표적인 방법이 Docker Compose 기반 통합 개발 환경입니다.
Docker Compose를 이용하면 다음과 같은 구조를 만들 수 있습니다.
↓
Spring Boot (Backend)
↓
Database (PostgreSQL / MySQL)
이 모든 서비스를 한 번의 명령으로 실행할 수 있습니다.
2. 전체 아키텍처
Docker Compose 기반 구조는 보통 다음과 같습니다.
├ backend (Spring Boot)
├ frontend (React)
└ docker-compose.yml
실행 구조
↓
React (Container)
↓
Spring Boot (Container)
↓
Database (Container)
네트워크는 Docker 내부 네트워크로 자동 연결됩니다.
3. Spring Boot Dockerfile 구성
Spring Boot 프로젝트에 Dockerfile을 작성합니다.
WORKDIR /app
COPY build/libs/app.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
Gradle 빌드
4. React Dockerfile 구성
React는 Node 기반으로 빌드합니다.
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm","run","dev"]
Vite 또는 React 개발 서버가 실행됩니다.
5. docker-compose.yml 구성
Docker Compose에서 두 서비스를 함께 실행합니다.
services:
backend:
build: ./backend
ports:
- "8080:8080"
networks:
- app-network
frontend:
build: ./frontend
ports:
- "3000:3000"
depends_on:
- backend
networks:
- app-network
networks:
app-network:
실행
6. React에서 Spring Boot API 호출
Docker 환경에서는 localhost를 사용하면 안 됩니다.
React에서 API 호출은 다음과 같이 합니다.
왜냐하면 Docker Compose 내부에서는
이기 때문입니다.
예시
7. CORS 설정
Spring Boot에서 React 요청을 허용해야 합니다.
public class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*");
}
};
}
}
8. 개발 환경 최적화
개발 시에는 Hot Reload가 중요합니다.
React
Spring Boot
또는 Docker volume 사용
- ./backend:/app
9. 실행 결과
실행 후 접속
http://localhost:3000
Spring Boot
http://localhost:8080
React → Spring Boot API 호출이 정상 동작합니다.
10. Docker Compose 방식의 장점
1️⃣ 환경 통일
2️⃣ 실행 단순화
한 번으로 전체 시스템 실행
3️⃣ 서비스 분리
Backend
DB
독립적으로 관리 가능
4️⃣ CI/CD 연계
Docker Compose 구조는 그대로
Cloud
로 확장 가능합니다.
11. 결론
Docker Compose를 활용하면 Spring Boot와 React 개발 환경을 하나의 통합 시스템으로 구성할 수 있습니다.
핵심 포인트는 다음과 같습니다.
- 서비스별 Dockerfile 구성
- docker-compose.yml로 서비스 연결
- Docker 네트워크 기반 API 호출
- CORS 설정
이 구조는 로컬 개발 환경뿐 아니라 CI/CD 및 클라우드 배포까지 확장 가능한 아키텍처입니다.
'Spring & Backend' 카테고리의 다른 글
| Claude Code vs Kimi Coding Agent 비교: Java Spring 개발자가 본 AI 코딩 에이전트 분석 (0) | 2026.03.05 |
|---|---|
| 이진 트리에 대해서 설명해 주세요. (0) | 2026.03.05 |
| Claude Code Agents 개념 이해 (0) | 2026.03.04 |
| 자바스크립트에서 메모리 누수가 발생하는 상황들을 설명해주세요. (0) | 2026.03.04 |
| GitHub Branch Protection 완전 정리 – 실무 브랜치 전략과 품질 게이트 설계 방법 (0) | 2026.03.03 |
