
Python 스크립트를 사용하여 작업을 자동화하는 것은 개발자들 사이에서 널리 사용되는 방식입니다.하지만 이러한 스크립트가 여러 시스템에서 원활하게 실행되도록 하는 것은, 주로 종속성 관리로 인해 상당한 어려움을 겪을 수 있습니다.바로 이 부분에서 Docker가 매우 유용하며, Python 스크립트와 관련 종속성을 이식 가능한 컨테이너 내에 캡슐화할 수 있습니다.이를 통해 스크립트가 다양한 환경에서 균일하게 실행됩니다.이 포괄적인 가이드에서는 실용적인 Python 스크립트를 작성하고 Docker 컨테이너 내에서 실행하는 과정을 간략하게 설명합니다.
Python에 Docker를 사용하는 이점
Python 종속성 관리는 특히 여러 프로젝트에 충돌하는 패키지가 필요한 경우 매우 번거로울 수 있습니다. Docker는 스크립트를 환경과 함께 번들링하여 이러한 문제를 해결합니다.이를 통해 “내 컴퓨터에서는 작동한다”는 흔한 변명을 없애고 모든 플랫폼에서 일관된 성능을 보장합니다.
또한 Docker는 여러 Python 패키지를 전 세계적으로 설치하지 않도록 하여 깔끔한 개발 환경을 유지하는 데 도움이 됩니다.모든 종속성은 Docker 환경 내에 포함되어 프로젝트 관리를 간소화합니다.
Docker는 스크립트를 다른 사용자에게 전달하거나 배포할 때 프로세스를 간소화합니다.복잡한 설치 지침이 필요 없으며, 단 하나의 명령어만으로 스크립트를 실행할 수 있습니다.
Python 스크립트 만들기
먼저 Python 스크립트와 Dockerfile을 저장할 프로젝트 디렉터리를 만드세요.다음 명령어를 사용하여 디렉터리를 설정하세요.
mkdir docker_file_organizercd docker_file_organizer
다음으로, 지정된 디렉터리를 스캔하고 확장자를 기준으로 파일을 분류하는 organize_files.py 라는 이름의 스크립트를 만듭니다.
nano organize_files.py
다음 코드를 organize_files.py 파일에 삽입합니다.이 스크립트는 내장 모듈 os
과 shutil
모듈을 활용하여 파일을 동적으로 처리하고 디렉터리를 생성합니다.
import osimport shutilSOURCE_DIR = "/files"def organize_by_extension(directory): try: for fname in os.listdir(directory): path = os.path.join(directory, fname) if os.path.isfile(path): ext = fname.split('.')[-1].lower() if '.' in fname else 'no_extension' dest_dir = os.path.join(directory, ext) os.makedirs(dest_dir, exist_ok=True) shutil.move(path, os.path.join(dest_dir, fname)) print(f"Moved: {fname} → {ext}/") except Exception as e: print(f"Error organizing files: {e}")if __name__ == "__main__": organize_by_extension(SOURCE_DIR)
이 스크립트는 지정된 디렉터리에 있는 파일을 확장자별로 정리합니다.os
모듈을 사용하여 파일 목록을 표시하고, 각 항목이 파일인지 확인하고, 확장자를 추출하고, 확장자 이름을 딴 폴더를 생성합니다.마지막으로, shutil
모듈은 각 파일을 해당 폴더로 이동하고, 새 위치를 나타내는 메시지를 표시합니다.
Dockerfile 정의
이제 스크립트 환경을 설명하는 Dockerfile을 만들어 보겠습니다.
FROM python:latestLABEL maintainer="[email protected]"WORKDIR /usr/src/appCOPY organize_files.py. CMD ["python", "./organize_files.py"]
이 Dockerfile은 Python으로 컨테이너를 설정하고, 스크립트를 여기에 복사하고, 컨테이너가 시작되면 스크립트가 자동으로 실행되도록 합니다.

Docker 이미지 빌드
Docker 이미지를 빌드하기 전에 시스템에 Docker가 설치되어 있는지 확인하세요.그런 다음 다음 명령을 사용하여 모든 내용을 이미지로 패키징할 수 있습니다.
sudo docker build -t file-organizer.
이 명령은 Dockerfile을 읽고 스크립트와 함께 필요한 Python 설정을 단일 컨테이너 이미지로 어셈블합니다.

샘플 디렉토리 만들기
스크립트가 실제로 작동하는 모습을 관찰하려면 sample_files 라는 이름의 테스트 폴더를 만들고 다양한 파일 형식으로 채워서 복잡한 환경을 시뮬레이션합니다.
mkdir ~/sample_filestouch ~/sample_files/test.txttouch ~/sample_files/image.jpgtouch ~/sample_files/data.csv
Docker 내부에서 스크립트 실행
마지막으로 Docker 컨테이너를 실행하고 sample_files 디렉터리를 컨테이너에 마운트합니다.이 -v
플래그는 로컬 ~/sample_files
디렉터리를 컨테이너 /files
디렉터리에 연결하여 Python 스크립트가 파일에 접근하고 정리할 수 있도록 합니다.
docker run --rm -v ~/sample_files:/files file-organizer
플래그를 사용하면 --rm
컨테이너가 완료되면 자동으로 제거되어 디스크 공간 소모가 줄어듭니다.

파일이 올바르게 정렬되었는지 확인하려면 다음 tree
명령을 사용하세요.
tree sample_files

결론
Docker 컨테이너 내에서 Python 스크립트를 성공적으로 실행하면 간소화되고 이식 가능하며 일관된 개발 환경을 활용할 수 있습니다.이러한 컨테이너화된 접근 방식은 다른 자동화 작업에 재사용을 용이하게 할 뿐만 아니라 종속성 문제 없이 스크립트 공유를 간소화하여 시스템을 체계적으로 관리할 수 있도록 합니다.향후에는 다중 스크립트 Docker 이미지를 생성하고, Cron Job을 사용하여 작업을 자동화하고, 스크립트를 Git, Jenkins 또는 클라우드 서비스와 같은 필수 도구와 통합하여 자동화 워크플로를 더욱 강화하는 방법을 고려해 보세요.
답글 남기기