앱 빌드 배포 , 도커 이미지 생성 , 레지스트리 푸시 - kuyeol/Document GitHub Wiki

배포 단계 설명

    1. 리눅스 경로 : cd dockerfile-build
    1. 도커 파일 빌드 : docker build -t 이미지명or서비스명:1.0.1 .
    1. 생성 이미지 컨테이너 생성
  • todo :

    • 동적으로 생성된 매개변수 구성 정리 필요 (도커파일,빌드스크립트)
    • 서비스 생성 시 해당 서비스 버킷 경로 및 이미지명 등...

Uber-Jar

  • *.jar 파일에 패키징 된 모든 프로그램 종속성이 포함됨

  • 매니페스트 파일에서 메인 메서드와 함께 클래스 이름을 정의했다면 해당 파일만으로 실행

  • 이러한 이유로 '실행 가능 JAR 파일' 이라고 함

Fast-Jar

  • lib/, app/ 폴더를 생성
  • 가볍고 빠른 실행 속도

[!NOTE] 활용 예시

  • 로컬 실행 or 개발 → mvn clean package (fast-jar)
  • 배포 or Docker → mvn clean install -Dquarkus.package.type=uber-jar

[!Caution] Windows 환경 터미널 주의 사항

  • 패키지 생성 시 터미널 명령에 따옴표 사용
    • windows : mvn clean install -D'quarkus.package.type=uber-jar'
    • linux : ./mvnw clean install -Dquarkus.package.type=uber-jar

패키지 빌드 with JDK

[!Note]

  • 기본 JDK -> ./ mvnw clean package
  • GraalVM -> ./ mvnw clean package -Dnative
  • 생성 위치 : 프로젝트/target/

기본 Package

mvn clean package
  • 결과 :
    • 내부적으로 lib/, app/ 폴더를 가진 구조
    • fast-jar 형태로 .jar 파일이 생성 -실행 : java -jar target/quarkus-app/quarkus-run.jar

Uber-jar Package

Windows 패키지 빌드 커맨드

PowerShell : 작은 따옴표 사용해 구분 추가 ' quarkus.package.type=uber-jar '

mvn clean install -D'quarkus.package.type=uber-jar' 

CMD : .cmd 사용하여 빌드 실행 프로젝트 루트에 해당 파일 있어야함

mvnw.cmd clean install -Dquarkus.package.type=uber-jar

Linux 패키지 빌드 커맨드

 ./mvnw clean install -Dquarkus.package.type=uber-jar  
  • 결과 :
    • target/redis-quickstart-1.0.0-SNAPSHOT-runner.jar ← 모든 dependency가 들어있는 단일 jar
  • 실행 : java -jar target/프로젝트명-1.0.0-SNAPSHOT-runner.jar

도커 이미지 빌드

[!note] 이미지 빌드

  1. 도커 명령 이미지 빌드
  2. 태그 생성
    • 버전 : 현재 생성 이미지 버전
    • latest : 최종 버전 태그 추가 레지스트리에 최근 태그 명시

export VERSION=0.0.0

  • 버전을 변수로 반복 호출
  • 여러 호출 필요해 변수 할당이 편리함

docker build -t 이미지-네임:$VERSION .

  • 도커파일을 사용해 이미지 생성
  • 레지스트리 태그 안 붙임
docker tag redis-quickstart:$VERSION ghcr.io/kuyeol/redis-quickstart:$VERSION //1
docker tag redis-quickstart:$VERSION ghcr.io/kuyeol/redis-quickstart:latest   //2

[!caution] 태그 스크립트 : docker

  • 태그 생성
    1. 생성 이미지에 현재 버전으로 태그 저장
    1. 생성 이미지에 latest 태그 저장
docker push ghcr.io/kuyeol/redis-quickstart:$VERSION //1
docker push ghcr.io/kuyeol/redis-quickstart:latest   //2
  • (1)현재버전,(2)최근버전 태그 각각 업로드

이미지 저장소 푸시

TODO:

깃헙 패키지

export TOKEN=깃토큰 echo TOKEN | docker login ghcr.io -u marinesnow34 --password-stdin

  • 로그인