Spring Batch 이용한 API 호출횟수 집계 - 5. Docker 컨테이너로 관리하기

Kim Dong Kyun·2023년 6월 15일
1

Spring Batch

목록 보기
5/6

개요

배치 작업 .txt 파일을 저장하고, 이메일로 보내는 것까지 오케이. 그런데, Docker 환경에서 띄우게 된다면 50000% 오류가 날 것 같다. 내 루트 디렉토리와 도커 환경 내에서의 디렉토리를 한번 맞춰보자!

1. SpringBoot 프로젝트 이미지화 하기

이전에 스프링부트에서 프로젝트 파일 이미지화 하는 것을 벨로그로 정리했다.

위 링크를 보고 진행하면 되는데, 중요한 부분은 여기다 Docker를 run 시킬 때
-v 명령어를 통해 "볼륨마운트(호스트의 디렉토리나 파일을 컨테이너 내부에 마운트하여 데이터를 공유하거나 영구적으로 보관하는 것)" 를 가능케 해야 한다.

명령어는 다음과 같다.

docker run -v "호스트의 디렉토리":"컨테이너 경로"

예를 들어,

docker run -p 8080:8080 -v /Users/host/Directory:/app/output my_image:tag

  • -p 8080:8080 호스트 포트:컨테이너 포트

  • -v /Users/host/Directory:/app/output
    = 호스트의 /Users/host/Directory 디렉토리를 컨테이너 내부의 /app/output 디렉토리에 마운트 한다.

  • 이렇게 하면 컨테이너 내부에서 /app/output 디렉토리를 사용하여 호스트의 Downloads 디렉토리에 접근 가능!


2. 적절히 설정 해 준 후, 작동하는지 보자!

자, 이제 디렉토리 설정 잘 했다. 한번 띄워보자구~

도커를 띄워도 h2 console 설정이 안되면 무슨 소용인고...이러면 스키마를 어떻게 푸쉬해줘야 할까...

당연히, h2의 배치 스키마 설정이 불가하므로 오류가 난다.


2 - 1 그렇다면, 어떻게 해야하나?

Spring Batch 스키마를 넣는 방법은 크게 두가진데

  1. SQL(DDL 직접 밀어넣기)

  2. application.yml 에서 기본 설정하기

batch:
    jdbc:
      initialize-schema: always

그런데 이거 두개 다 안돼서 h2 DB에서 DDL 계속 했었자너!!?? 어찌할꼬...

직접 resource에다가 .sql 파일을 만들어서 SPRINGBOOT 프로젝트 빌드 시 이 DDL이 설정되도록 하자!


2 - 2 스키마 직접 밀어넣기!

  1. Spring Batch 스키마 찾아내서 DDL 복사하기

  1. src/main/java/resources/schema.sql : 테이블 스키마(DDL)를 넣어주기

schema.sql 파일에 위의 DDL을 복사 후 파일로 넣어준다.

++ data.sql 은 DML 가능!


잘 떠서, 작동중인 모습. hibernate 쿼리 설정 해놨더니 잘 찍히고 있다

이제, 새벽 4시에 실제 오는지 확인 해보면 됨! (사실 이미 해봄)

Docker로 띄워놓아도 아아~주 잘 받는 모씁!


다음 시간은?

어떤 시도를 해볼까...Ci/CD 실습? 고민 좀 해봐야겠다!

0개의 댓글