앱 빌드 배포 , 도커 이미지 생성 , 레지스트리 푸시 - kuyeol/Document GitHub Wiki
배포 단계 설명
-
- 리눅스 경로 :
cd dockerfile-build
- 리눅스 경로 :
-
- 도커 파일 빌드 :
docker build -t 이미지명or서비스명:1.0.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] 이미지 빌드
- 도커 명령 이미지 빌드
- 태그 생성
- 버전 : 현재 생성 이미지 버전
- 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
- 태그 생성
-
- 생성 이미지에 현재 버전으로 태그 저장
-
- 생성 이미지에 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
- 로그인