GCP(구글 클라우드 플랫폼) VM에 Docker를 사용하여 Spring Boot와 React 애플리케이션을 배포하는 과정은 여러 단계를 거쳐야 합니다. 이 과정을 통해 효율적으로 애플리케이션을 관리하고 운영할 수 있습니다. 아래에 단계별로 설명하겠습니다.
1. GCP VM 인스턴스 생성
- GCP 콘솔에 로그인 후, 'Compute Engine'에서 'VM 인스턴스'를 클릭합니다.
- 인스턴스 설정:
- 이름: 인스턴스 이름을 지정합니다.
- 리전: 적절한 리전을 선택합니다 (예: asia-northeast3).
- 머신 유형: 기본적으로 E2 머신을 선택하거나 필요에 따라 다른 유형을 선택합니다.
- 부팅 디스크: Ubuntu 20.04 LTS를 선택하여 배포합니다.
- 방화벽 설정: HTTP와 HTTPS 트래픽을 허용합니다.
- 인스턴스 생성을 클릭하여 VM을 생성합니다. 이때 GCP에 처음 가입하면 300달러의 무료 크레딧이 제공되므로 이를 활용할 수 있습니다.
2. Docker 설치
VM 인스턴스가 생성된 후 SSH를 통해 접속하여 Docker를 설치합니다. 다음 명령어를 입력합니다.
sudo apt update
sudo apt install docker.io
Docker가 설치된 후, Docker 서비스가 정상적으로 작동하는지 확인합니다.
sudo systemctl start docker
sudo systemctl enable docker
3. Spring Boot 애플리케이션 Docker화
Spring Boot 애플리케이션을 Docker로 패키징하기 위해 Dockerfile을 생성합니다. 아래는 기본적인 Dockerfile 예시입니다.
FROM openjdk:11 AS builder
WORKDIR /app
COPY . .
RUN ./gradlew build -x test
FROM openjdk:11
COPY --from=builder /app/build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
4. React 애플리케이션 Docker화
React 애플리케이션도 마찬가지로 Dockerfile을 생성합니다. 아래는 기본적인 Dockerfile 예시입니다.
FROM node:16 AS builder
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
5. Docker Compose 설정
애플리케이션을 동시에 실행하기 위해 docker-compose.yml
파일을 생성합니다.
version: '3'
services:
backend:
build:
context: ./backend
ports:
- "8080:8080"
frontend:
build:
context: ./frontend
ports:
- "3000:80"
6. Docker 이미지 빌드 및 실행
Docker 이미지를 빌드하고 컨테이너를 실행하기 위해 다음 명령어를 사용합니다.
docker-compose build
docker-compose up
이제 React 애플리케이션은 3000 포트에서, Spring Boot 애플리케이션은 8080 포트에서 접근할 수 있습니다.
7. 고정 IP 주소 예약
인스턴스가 생성되면 할당된 IP는 임시적입니다. GCP 콘솔에서 VPC 네트워크로 가서 외부 고정 IP 주소를 예약하여 인스턴스의 IP 주소를 고정할 수 있습니다.
8. 방화벽 규칙 설정
VM과 SQL 인스턴스 간의 통신을 위해 방화벽 규칙을 설정합니다. 필요한 포트는 HTTP(80), HTTPS(443), MySQL(3306), Spring Boot(8080), SSH(22)입니다.
Docker와 GCP를 활용한 React + Spring boot + mysql 배포 총 정리(1편)
Docker와 GCP를 활용한 React + Spring boot + mysql 배포 총 정리(1편)
Docker와 GCP를 활용해서 React + Spring boot + mysql을 cloud server에 배포하는 방법을 정리 하려고 한다.가장 먼저 할 것은 GCP를 활용해서 ubuntu 기반의 virtual machine 을 만드는 것이다. 우리가 만든 Reac
velog.io
이 모든 단계를 통해 GCP VM에 Docker를 이용해 Spring Boot와 React 애플리케이션을 성공적으로 배포할 수 있습니다. 이 과정을 통해 효율적인 개발 및 배포 환경을 구축할 수 있으며, 애플리케이션 관리가 용이해집니다.