지난 포스팅에 뉴스기사 크롤링 소스를 도커에 올려서 실행해 보았다. 한 걸음 더 나아가서 도커 컨테이너가 생성한 크롤링 결과 파일을 확인하고 로컬에 옮겨보자. 크롤링 및 도커 기본 지식이 필요하면 이전 포스팅을 참고하자.
2024.12.27 - [코드리뷰/chatGPT(Python)코드] - 뉴스 기사 추출하는 코드 만들어 줄래? 1탄 (Chatgpt / Claude)
2024.12.27 - [분류 전체보기] - 뉴스 기사 추출하는 코드 만들어 줄래? 2탄 docker 올려보자
1. 하려고 하는 것
- 뉴스기사 수집한 결과 파일을 로컬에 복사한다.
- docker가 생성한 컨테이너 내부에 들어가 보자.
- docker 컨테이너에 로컬 디렉토리를 마운트 시키자.
- 표준시간대를 한국시간으로 설정하자.
2. Actions
(1) 뉴스기사 수집 결과 파일 가져오기 (컨테이너 --> 로컬 pc)
2가지 방법이 있다. 하나는 컨테이너에 들어가서 로컬로 카피하는 방법과 처음부터 로컬 디렉터리를 마운트 시키는 방법이다. 전자를 위해서는 약간의 작업이 필요하다. 뉴스기사 크롤링이 끝나면 프로세스가 종료된다. 그러면 컨테이너도 함께 정지하기 때문에 내부에 접속할 수 없다. 그래서 news소스를 수정한다.
if __name__ == "__main__":
while True: # 무한 루프
try:
headlines_df = get_naver_news_headlines()
...
...
# 다음 크롤링까지 대기 (예: 1시간)
time.sleep(3600) # 3600초 = 1시간
except Exception as e:
print(f"에러 발생: {e}")
time.sleep(300) # 에러 발생시 5분 대기 후 재시도
dockerfile에 컨테이너에 디렉토리가 생성될 수 있도록 코드를 추가한다.
docker 이미지를 만든다.
> docker build -t news .
docker 컨테이너를 실행한다.
> docker run --name news-container news
실행 중인 컨테이너 확인하자.
> docker ps
컨테이너에 접속해 output 파일 조회하자
> docker exec -it news-container bash
> ls output
로컬 pc에 카피하자
> docker cp news-container:/app/output ./output
컨테이너를 종료한다.
> docker stop news-container
(2) 뉴스기사 수집 결과 파일 마운트 시키기
컨테이너가 구동될 때 로컬 디렉터리를 마운트 시키는 방법이다. 컨테이너가 종료되더라도 생성된 파일은 유지된다.
기 생성된 컨테이너 삭제하고 마운트 옵션을 지정해 다시 생성하다.
> docker stop news-container
> docker run --name news-container -v ${PWD}/output:/app/output -d news (백그라운드에서 수행 -d옵션)
컨테이너 상태 확인
로컬 디렉토리 파일 확인
docker 컨테이너 정보 확인
> docker inspect news-container
마운트 정보 확인
컨테이너 상태 확인
> docker stats
컨테이너 stop
> docker stop news-container
'코드리뷰 > chatGPT(Python)코드' 카테고리의 다른 글
웹 페이지 조회 건수 보여주기 - docker compose 이용 (0) | 2024.12.29 |
---|---|
뉴스 기사 추출하는 코드 만들어 줄래? 1탄 (Chatgpt / Claude) (1) | 2024.12.27 |
코드 한 줄로 프로그램 배포하기 (0) | 2024.10.18 |
댓글