.env를 crontab에서 인식하지 못하는 문제 수정
This commit is contained in:
@ -27,20 +27,22 @@ RUN pip install --no-cache-dir --upgrade pip && \
|
||||
ftputil \
|
||||
pillow \
|
||||
pyvirtualdisplay \
|
||||
requests
|
||||
requests \
|
||||
python-dotenv
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN fc-cache -f -v
|
||||
|
||||
# autouploader 디렉토리의 모든 Python 스크립트 및 설정 파일 복사
|
||||
# context: . (프로젝트 루트) 이므로 autouploader/ 에서 복사
|
||||
COPY autouploader/ /app/
|
||||
COPY app/ /app/
|
||||
|
||||
RUN chmod +x /app/run.sh
|
||||
# 로그 디렉토리 생성
|
||||
RUN mkdir -p /logs && chmod 777 /logs
|
||||
|
||||
# crontab 등록 (docker logs에 출력되도록 설정)
|
||||
RUN echo "0 9 * * * /app/run.sh 2>&1" | crontab -
|
||||
# Crontab 설정: 매일 09:00에 절대 경로로 Python 실행
|
||||
# cron은 컨테이너의 환경 변수를 상속받으므로 env_file로 주입된 변수들을 사용 가능
|
||||
RUN echo "0 9 * * * /usr/bin/python /app/gnu_autoupload.py >> /logs/cron.log 2>&1" | crontab - && \
|
||||
chmod 666 /logs
|
||||
|
||||
# Cron 로그를 docker logs로 보내기 위해 포그라운드에서 실행
|
||||
CMD ["/bin/bash", "-c", "cron -f"]
|
||||
# Cron을 포그라운드에서 실행 (docker logs에 출력되도록)
|
||||
CMD ["/usr/sbin/cron", "-f"]
|
||||
@ -1,6 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 로그 출력 함수
|
||||
# 이 스크립트는 수동 실행 시 사용됩니다.
|
||||
# Crontab은 python을 직접 실행하므로 이 스크립트를 거치지 않습니다.
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
|
||||
}
|
||||
@ -9,10 +11,9 @@ log "========================================"
|
||||
log "날씨 정보 자동 게시글 생성 시작"
|
||||
log "========================================"
|
||||
|
||||
# Python 스크립트 실행
|
||||
cd /app
|
||||
if [ -f "gnu_autoupload.py" ]; then
|
||||
python3 /app/gnu_autoupload.py 2>&1
|
||||
/usr/bin/python gnu_autoupload.py 2>&1
|
||||
EXIT_CODE=$?
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
log "✅ 실행 완료 (종료 코드: $EXIT_CODE)"
|
||||
Reference in New Issue
Block a user