Jar 파일 생성 실행
- application.yml 추가
spring:
# jar 파일 만들때 템플릿 경로 지정
thymeleaf:
prefix: classpath:/templates/
suffix: .html
- build.gradle 추가
// jar 파일 만들 때 여러 번 실행하니 중복되어서 코드 추가
bootJar {
duplicatesStrategy = 'exclude'
}
- Gradle에서 build-bootJar 더블 클릭하면 Jar 파일 생성 완료
- 생성된 Jar 파일 Run하고 애플리케이션 확인
- 만약 jar 삭제하고 다시 생성하고 싶을 땐 터미널에 “.\gradlew clean” 입력 후 재 생성 하기!
- 주의할 점
- jar 파일 실행 에러(templates을 못 찾을 때)
- controller와 html의 템플릿 경로가 맞는지 확인한다. 예를 들어 어느 것은 /layout/default 이거나, layout/default 처럼 앞에 슬래시가 있거나 없을 수 있다.
- 앞에 슬래시(/)가 있는 코드들은 templates 경로를 찾아갈 때 슬래시가 두 번 있어서 경로를 못찾는다.
- 그러므로 controller와 html 파일의 templates 경로를 맨 앞에 슬래시가 있는 코드들은 모두 없애주어 경로 통일을 해준다!
- jar 파일 실행 에러(templates을 못 찾을 때)
Jar 파일 도커 컨테이너 실행
- 도커 파일 작성
FROM openjdk:11-jdk
LABEL maintainer="(labelName)"
ARG JAR_FILE=build/libs/*.jar
ADD ${JAR_FILE} app.jar
EXPOSE 8099
ENTRYPOINT ["java","-jar","/app.jar"]
- 도커 파일 빌드해서 이미지 생성
- 터미널에 “docker build -t docker-springboot . “ 입력하기
- 도커 컨테이너 실행
- 터미널에 “docker run -p 8099:8099 docker-springboot” 입력하기
- 어플리케이션 실행 확인
Jar 파일 도커 컴포즈 컨테이너 실행
- 도커 컴포즈 사용 이유
- 컨테이너 하나만 올리면 될 줄 알았는데 레디스 때문에 컨테이너를 2개 올려야 하여 도커 컴포즈를 사용하게 되었다.
- 도커 컴포즈 만들기
- docker-compose.yml 생성
- 포트 포워딩(ports) : “호스트 포트(외부 IP):컨테이너 포트(내부 IP)”
version: "3" services: webserver: build: . # 현재 위치에서 도커 파일을 찾는다. ports: - "80:8099" depends_on: # 레디스랑 연결 - redis #restart: #always redis: image: redis:latest # 최신 레디스 이미지 다운 or 실행 ports: - "6379:6379" command: redis-server --port 6379 hostname: redis #restart: #always
- application.yml 수정 (yml 파일 수정 시 Jar 파일 삭제 후 재 생성하기!!)
redis: host: redis # 도커 컴포즈로 인해 수정 port: 6379
- 터미널에서 “docker-compose up” 작성 후 애플리케이션 실행 확인
- 컨테이너 종료 시 터미널에서 “docker-compose down” 입력
- docker-compose.yml 생성
728x90
'Computer Science > CI&CD' 카테고리의 다른 글
[CI/CD] Github Action을 사용한 자동 배포 구축(CD), Github Secrets 생성, Github Action 스크립트 작성 (0) | 2024.01.17 |
---|---|
[CI/CD] AWS Elastic Beanstalk 애플리케이션 생성, 수동 배포 방법, AWS IAM 사용자 생성 (0) | 2024.01.17 |
[CI/CD] Docker Compose란 (0) | 2024.01.12 |
[CI/CD] Docker, Dockerfile, Docker Image, Docker Container란 (0) | 2024.01.11 |
[CI/CD] AWS Elastic Beanstalk이란 (0) | 2024.01.11 |