일단 이거도 도커라이징부터 하자
도커라이징은 웹과 똑같은 도커파일을 사용하면된다
# 빌드 스테이지
FROM gradle:8.8-jdk17 AS build
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build --no-daemon
# 실행 스테이지
FROM openjdk:17-slim
EXPOSE 8080
RUN mkdir /app
COPY --from=build /home/gradle/src/build/libs/*.jar /app/spring-boot-application.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/spring-boot-application.jar"]
도커이미지로 잘 말았으면,이걸 로컬저장소에 푸시하고,도커 컴포즈파일을 만들면 된다
version: '3'
services:
batch-job:
image: localhost:5000/whyprice_cache_batch:1.0
container_name: batch-job-container
restart: "no"
env_file:
- /env파일경로/main.env
networks:
- app-network
networks:
app-network:
external: true
name: docker_app-network
이때 주의해야할건,restart를 no로 둬서,한번실행되고 꺼졌을때 재실행되는걸 방지하는것과,networks를 이미 존재하는 mysql의 네트워크에 결합시켜둬야한다는데 있다
그래서 networks에 external을 true로 줬고,docker network ls로,저번에 웹앱만들때 생성한 네트워크를 찾아서 저기에 name에 넣어서 둘을 연결시켜줘야한다
또한 env파일은 그때 사용했던 env파일 경로에 연결시켜두는게 편하다
일단 이렇게 만들어두고 docker-compose -f whyprice_batch_compose.yaml up -d 로 실행이 되는지를 확인해보자
컨테이너 로그확인은 docker logs batch-job-container 로 하면된다
잘 실행이 됐다면 이제 스케줄러에 등록해야한다
이건 그냥 리눅스의 크론탭에 시간마다 도커컴포즈를 실행하게 등록하면된다
일단 그러려면 시간마다 실행되는 쉘스크립트를 만들어야하는데,이건그냥
#!/bin/bash
docker-compose -f /home/rkrkrr0101/docker/batch/whyprice_batch_compose.yaml up --abort-on-container-exit
이렇게 도커컴포즈로 해당파일을 실행하라는 한줄만 넣으면된다(#!/bin/bash 는 꼭 넣어야함,쉘스크립트라는걸 알려주는거)
그리고 저걸 크론탭에 시간과같이 실행시키는 명령어를 넣으면 된다
crontab -e
이걸치면 에디터가 뜨는데,거기에 명령을 치고 wq를 해서 저장하면된다
명령으로
*/10 * * * * sh home/abcd/your-script.sh
를 치면 10분마다 저위치의 스크립트를 실행하라는거다(절대경로로 입력해두는게좋음)
이렇게 등록을 해두면되고,
크론탭 목록을 보고싶다면 crontab -l,삭제하고싶다면 crontab -r로 삭제할수있다
또한 로깅을 해야한다면
*/10 * * * * sh home/abcd/your-script.sh > /home/abcd/test.sh.log 2>&1
이렇게 실행마다 로그를 갱신할수있고,각 실행마다 다른로그파일을 만드려면
*/10 * * * * sh home/abcd/your-script.sh >> /home/abcd/test.sh.log 2>&1
이렇게하면 될거다,이건 직접 해보진않았으니 문제있으면 알려주셈
아마 모든 stderr을 파일로 저장할듯
'사이드프로젝트 > (240808)이거왜오름?' 카테고리의 다른 글
이거왜오름?벡터검색(RAG)추가 (0) | 2025.04.01 |
---|---|
이거왜오름?레포트생성부분 비동기(코루틴)처리하기 (1) | 2024.11.02 |
이거왜오름?웹앱 도커라이징하기 (0) | 2024.10.06 |
이거왜오름?높은거래량 레포트 스프링배치로 미리만들어서 부하줄이기 (4) | 2024.10.04 |
이거왜오름? 헥사고날 리팩터링 (0) | 2024.09.18 |