Springboot + Google Cloud Project

1. Java 애플리케이션의 Cloud Run 배포 과정

onda2me google cloud

2. onda2me java 개발환경

  • Eclipse 2021-06 (4.20.0) + Spring Tools 4
  • Java 11
  • MySQL
  • Maven

로컬 빌드 및 배포

1. Springboot 배포용 jar 파일 생성

  • pom.xml 파일 jar 설정 추가

    <project xmlns="http://maven.apache.org/POM/4.0.0"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <groupId>com.onda2me.app</groupId>
      <artifactId>onda2meapi</artifactId>
      <version>0.1.1-SNAPSHOT</version>
      <!-- jar 배포 시 -->
      <packaging>jar</packaging>
      <!-- war 배포 시 
      <packaging>war</packaging>
      -->
    </project>
    
  • 프로젝트명> Run As> Maven build
    maven build

  • Goals: package 입력> Run 실행

    build run

  • 프로젝트> target> classes> OOO.jar 파일 생성

      \onda2me-api\target\classes\onda2meapi-0.1.1-SNAPSHOT.jar
    
  • jar 실행 ( 애플리케이션 정상 동작여부 확인)

    java -jar onda2meapi-0.11.5-SNAPSHOT.jar
    

    java -jar

2. Dockerfile 작성

  • 실행할 jar 파일이 있는 폴더에 Dockerfile 생성

    #jdk 이미지
    FROM eduosi/jdk
    #ARG JAR_FILE=onda2meapi-0.9.jar
    
    #COPY --from=${JAR_FILE} ./classes/${JAR_FILE}
    #COPY [원본jar파일] [복사할jar파일] 
    COPY onda2meapi-0.11.5-SNAPSHOT.jar onda2meapi.jar
    
    #서비스 포트
    EXPOSE 8080
    
    CMD ["java", "-jar", "onda2meapi.jar", ""]
    

3. doker build (local)

  • build image
    • 명령 프롬프트창에서 build하기
      #docker build -t <생성할 이미지명>:<태그>
      $docker build -t onda2meapi:0.11.3
      
    • VSCode에서 build하기 프로젝트 시작
  • 생성한 image 확인
    • 명령 프롬프트창에서 image 확인하기 프로젝트 시작

    • Docker Desktop에서 image 확인하기 프로젝트 시작

4. doker run (local)

  • image로 웹서비스 실행하기
    • 명령 프롬프트 창에서 실행하기
      $docker run -p 8080:8080 onda2meapi:0.11.3
      
    • Docker Desktop에서 실행하기 프로젝트 시작

      프로젝트 시작

5. local 접속 확인 (local)

  • 웹에서 확인하기 (/)
    프로젝트 시작

  • 웹에서 확인하기 (/api)
    프로젝트 시작

Cloud run 빌드 및 배포

이클립스 또는 VSCode 에서는 잘 동작하는 프로젝트가 이미지 생성 후 구글 런에 배포하면 오류가 발생하기도 함.
이런 경우 docker desktop 으로 Run 성공 후 Google Cloud Run에 배포하니 정상 동작함

1. gcloud build

  • gcloud CLI로 build 실행
      $gcloud builds submit --tag gcr.io/onda2me/onda2meapi:0.10.map 
    

    프로젝트 시작

  • Google Cloud> Cloud Storage> Bucket

    프로젝트 시작

  • Google Cloud> Artifact Registry> 저장소> [프로젝트명]> [이미지명] 프로젝트 시작

2. cloud console deploy

  • 웹브라우저로 Cloud Run 콘솔에 접속 Run 콘솔 바로가기

    프로젝트 시작

  • 배포할 서비스 선택> 새 버전 수정 및 배포 선택
    프로젝트 시작

  • 컨테이너 수정> 선택
    프로젝트 시작

  • 배포할 이미지 선택> 배포 프로젝트 시작

3. cloud run 접속 확인

  • 웹에서 확인하기 (/)
    프로젝트 시작

  • 웹에서 확인하기 (/api)
    프로젝트 시작

Bootstrap 등 디자인 적용 후 접속확인

  • 이클립스 또는 VSCode 에서는 잘 동작하는 프로젝트가 이미지 생성 후 Google Cloud Run에 배포하면 오류가 발생하기도 함.
  • Google Cloud Run 배포 시 오류가 발생하는 경우 docker desktop 으로 Run 성공 후 Google Cloud Run에 배포하니 정상 동작함
  • onda2me cloud run은 요청중일때만 CPU가 할당되어, 첫 호출은 CPU 활성화 시간이 소요되어 10초 가량 응답지연이 발생함 바로가기

+ 참고

  • WSL(= Windows Subsystem for Linux) : 윈도우 상에서 리눅스를 사용할 수 있도록 도와주는 도구로, 단순한 가상머신을 제공하는 것이 아닌 윈도우와 통합해서 사용할 수 있는 리눅스 환경을 제공
  • Docker : 다양한 프로그램 및 실행환경을 컨테이너로 추상화하여 프로그램의 배포 및 관리를 단순하게 해주는 가상화 플랫폼
  • Dockerfile : 도커 이미지 생성을 위한 지시사항을 포함하는 텍스트 파일
  • Container : 프로그램과 그에 필요한 실행환경 등을 포함하여 패키징 된 것

댓글남기기