티스토리 뷰

[Docker] 윈도우 Spring Boot + React 풀스택 프로젝트 실행하기
2024.11.05 - [Docker] - [Docker] Windows 11 도커 설치하기 시스템 정보 > Windows 버전 확인Windows Home Edition 사용중임을 확인.Home Edition일 경우 WSL2 기반 Docker Engine만 사용 가능하므로, WSL을 설치해보자.Windows H
korea-potato.tistory.com
도커 설정 참조
minikube start
minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes. All you need is Docker (or similarly compatible) container or a Virtual Machine environment, and Kubernetes is a single command away: minikube start What you’ll
minikube.sigs.k8s.io
minikube 설치
오늘은 이전에 설정한 풀스택 도커 환경을 로컬 쿠버네티스에 배포해보자.
minikube란, 쿠버네티스 클러스터를 로컬 환경에서 사용할 수 있게 해주는 가벼운 구현체이며 macOS, Linux 및 Windows에서 빠르게 세팅할 수 있다.
✅ 1. Docker Hub에 이미지 Push 하기
1️⃣ | 로그인 | docker login |
2️⃣ | 태그 | docker tag localname yourdockerid/name |
3️⃣ | 푸시 | docker push yourdockerid/name |
4️⃣ | 확인 | Docker Hub 접속 |
docker images 명령어로 실제 로컬 이미지 이름 확인 ex) test-frontend, test-backend
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test-frontend
test-backend
로컬에서 빌드한 상태인 백엔드/프론트엔드 이미지를 Docker Hub에 올릴 수 있게 태그 붙이기
> docker tag test-backend [your-Docker-Id]/backend-app
> docker tag test-frontend [your-Docker-Id]/frontend-app
Docker Hub 로그인 & 이미지 푸시
docker login
# 자동 로그인 또는 아이디/비밀번호 입력
docker push yourdockerid/backend-app
docker push yourdockerid/frontend-app
Docker Hub 웹사이트 내 Repositories 또는 Docker Desktop 에서 푸시된 이미지 확인
✅ 2. deployment.yml (배포) , service.yml (내부/외부 연결) 쿠버네티스 리소스 정의
📁 디렉토리 구조 미리보기
k8s/
├── backend-deployment.yaml
├── backend-service.yaml
├── frontend-deployment.yaml
└── frontend-service.yaml
📄 backend-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-deployment
spec:
replicas: 1
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: backend
image: yourdockerid/backend-app
ports:
- containerPort: 8080
📄 backend-service.yaml
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: backend
ports:
- port: 8080
targetPort: 8080
📄 frontend-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend-deployment
spec:
replicas: 1
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: yourdockerid/frontend-app
ports:
- containerPort: 80
📄 frontend-service.yaml
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
type: NodePort
selector:
app: frontend
ports:
- port: 80
targetPort: 80
nodePort: 30080 # 브라우저에서 접근할 포트
✅ 3. minikube 실행 후 배포하기
> minikube start
배포하기
> kubectl apply -f ./k8s
정상적으로 배포되면 다음 명령어로 상태 확인:
> kubectl get pods # Running이면 정상, 오류 시 kubectl logs [pod-name] 명령어로 로그 확인
> kubectl get services # 여기서 frontend의 PORT(S)가 80:30080/TCP 로 되어 있어야 정상!
🎯 frontend-service.yaml 에서 설정한 포트로 접속해보기 (localhost:30080)
⚠️ 위에서 접속 오류 시 포트포워딩 방식으로 테스트하기
NodePort 대신 minikube service 명령어로 접근
minikube service frontend-service
이 명령어는 브라우저를 열고 프론트엔드 서비스로 바로 연결해준다.
접속 후 프론트엔드 화면이 나오고, 백엔드와의 통신까지 확인하면 성공!

📌 주의
정상 통신 아닐 시, nginx.conf 파일에서 proxy_pass 서비스 이름 매칭 확인하기
location /api/ {
proxy_pass http://backend-service:8080; # backend-service라는 Kubernetes 서비스 이름과 매칭 되어야함
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

📌 점검
✅ 1. 파드 상태 확인
kubectl get pods
모든 파드의 STATUS가 Running 상태인지 확인.
✅ 2. 서비스 상태 확인
kubectl get services
frontend-service와 backend-service가 잘 뜨는지, EXTERNAL-IP 또는 PORT(S)가 적절한지 확인.
✅ 3. 프론트엔드 서비스 접속 테스트
minikube service frontend-service
열리는 브라우저 창 또는 표시되는 URL이 정상적으로 프론트 화면을 보여주는지 확인.
✅ 4. 프론트 → 백엔드 API 연동 확인
프론트 화면에 “Hello from Backend” 같은 메시지가 보이면 백엔드와 연결이 성공한 것!
💡 만약 문제가 있으면:
kubectl logs <frontend-pod-name>
kubectl logs <backend-pod-name>
각 파드의 로그를 확인하면 원인을 더 정확히 알 수 있다.
모든 것이 잘 작동하면 쿠버네티스 배포 성공! 🎉
