# Insert values into the table
t_start = time()
count = 0
for batch in file.iter_batches(batch_size=100000):
count+=1
batch_df = batch.to_pandas()
print(f'inserting batch {count} ...')
b_start = time()
batch_df.to_sql(name='ny_taxi_data', con=engine, if_exists='append')
b_end = time()
print(f'inserted, time taken {b_end-b_start:10.3f} seconds.\n')
t_end = time()
print(f'Completed. Total time taken was {t_end-t_start:10.3f} seconds for {count} batches.')
도커 이미지를 생성하기 위해 Dockerfile을 작성해야한다. 간단한 작성 과정과 함께 사용되는 명령들을 정리한다.
FROM python:3.9
RUN pip install pandas
WORKDIR /app
COPY pipeline.py pipeline.py
ENTRYPOINT ["python", "pipeline.py"]
FROM: 기반이 되어주는 이미지를 선택한다. (docker-hub에 있음!!) > 내가 생성한 이미지는 python:3.9를 기본 이미지로 가져와 생성되는 이미지이다!
RUN: 이미지 생성시에 초기에 동작할 명령들을 입력한다. > pip를 사용해서 pandas 모듈을 설치!
WORKDIR: 작업할 디렉토리를 설정한다.
COPY: 로컬에서 docker에 복사할 파일을 정의한다.
ENTRYPOINT: 컨테이너 시작시에 실행되는 기본 명령을 정의한다. > python으로 pipeline.py를 실행하라는 뜻!! ENTRYPOINT에 추가로 인자전달을 위해서 docker 실행 시에 인자를 같이 넘겨줄 수 있다. 아래 예시문을 추가하였다.!
docker run -it test:pandas your_day_value
2. pipeline.py 작성하기
import pandas as pd
import sys
# some fancy stuff with pandas
# argv[0] = name of the file
day = sys.argv[1]
print(f'job finished successfully day= f{day}')
인자를 받아서 구문을 출력하는 간단한 파일을 생성하여 테스트 해보았다.
3. 이미지 빌드 및 실행
빌드 명령: -t를 이용해서 tag를 부여하고 .을 이용해서 현재 디렉토리를 빌드 컨텍스트의 위치로 지정한다. 즉, docker build 명령을 실행하는 위치에서 Dockerfile을 찾고, 해당 디렉터리와 그 하위 디렉터리에 있는 파일들을 이미지 빌드에 사용할 수 있는 자원으로 간주한다.
docker build -t test:pandas .
이미지 실행(컨테이너 생성) : 도커 컨테이너를 실행하고 생성된 컨테이너에 인자를 전달한다. -it 옵션은 Docker 컨테이너를 대화형 모드로 실행하며, 터미널 입력을 컨테이너에 연결한다! 이 옵션은 일반적으로 컨테이너 내에서 명령어를 실행하거나, 쉘에 접근하여 컨테이너를 대화식으로 조작할 필요가 있을 때 사용된다.