
Pythonスクリプトを用いたタスクの自動化は、開発者の間で広く行われています。しかし、これらのスクリプトを複数のシステム間でシームレスに実行できるようにするには、主に依存関係の管理が大きな課題となる場合があります。そこでDockerが大きな力を発揮します。Dockerを使用すると、Pythonスクリプトと関連する依存関係をポータブルなコンテナ内にカプセル化できます。これにより、スクリプトがさまざまな環境で均一に動作することが保証されます。この包括的なガイドでは、実用的なPythonスクリプトを作成し、Dockerコンテナ内で実行するプロセスを概説します。
PythonでDockerを使うメリット
Pythonの依存関係の管理は、特に異なるプロジェクトで競合するパッケージが必要な場合は、すぐに面倒になります。Dockerは、スクリプトを環境とバンドルすることでこれらの問題に対処します。これにより、「私のマシンでは動作する」というよくある言い訳がなくなり、あらゆるプラットフォームで一貫したパフォーマンスが保証されます。
さらに、Dockerは多数のPythonパッケージをグローバルにインストールするのを防ぐことで、クリーンな開発環境を維持するのに役立ちます。すべての依存関係はDocker環境内に保持されるため、プロジェクト管理が効率化されます。
スクリプトを他のユーザーに渡したりデプロイしたりする際、Docker はプロセスを簡素化します。複雑なインストール手順は必要ありません。スクリプトを実行するには、たった 1 つのコマンドだけで十分です。
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

結論
PythonスクリプトをDockerコンテナ内で正常に実行できれば、合理化され、移植性が高く、一貫性のある開発環境を活用できます。このコンテナ化されたアプローチは、他の自動化タスクへの再利用を容易にするだけでなく、依存関係を気にすることなくスクリプトを簡単に共有できるため、システムの整理整頓にも役立ちます。今後の取り組みとして、マルチスクリプトDockerイメージの作成、cronジョブによるタスクの自動化、Git、Jenkins、クラウドサービスなどの主要ツールとのスクリプトの統合などを検討し、自動化ワークフローをさらに強化することを検討してみてください。
コメントを残す