前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。
今回はdockerComposeを使って同じサーバー上で複数の自動取引botを並行して実行する方法を調べました。
Docker関連の本はこれも併せて読んでいる。この本は図解が多いのでイメージを掴みやすい。Docker Composeの解説が特に分かりやすかった。あと数冊読んでDockerを体系的に理解する。https://t.co/FHAlrqduba
— よだか(夜鷹/yodaka) (@yodakablog) August 24, 2024
参考
Docker&仮想サーバー完全入門 Webクリエイター&エンジニアの作業がはかどる開発環境構築ガイド
Docker超入門講座 合併版 | ゼロから実践する4時間のフルコース
→動画の中盤からDocker Composeを使った複数アプリの実演がある。コンテナを作成して操作する手順から解説しているため、段階を踏んで理解するのに役立つ。
コンテナを使用する (Docker)
概要:
Dockerを使用して各自動取引ボットをコンテナ化し、同じサーバー上で並行して実行します。Docker Composeを使えば、複数のコンテナを一括で管理できます。
利点:
各ボットが独立したコンテナで動作するため、依存関係の衝突を避けることができる。また、効率的なリソース管理が可能で、サーバー全体のオーバーヘッドが軽減される。
コンテナを使用して複数の自動取引ボットを同じサーバー上で並行して実行する方法について、具体的な手順を説明します。ここでは、各ボットをDockerコンテナとして構築し、Docker Composeを使って一括管理する方法を紹介します。
1. 各自動取引ボットのDockerfileを作成
まず、各取引ボットのためにDockerfileを作成します。これは、ボットをどのようにコンテナ化するかを指定するファイルです。
例: Dockerfile
# ベースイメージとしてPythonを使用 FROM python:3.9-slim # 作業ディレクトリを設定 WORKDIR /app # 依存関係をリスト化したファイルをコピー COPY requirements.txt . # 依存関係をインストール RUN pip install --no-cache-dir -r requirements.txt # ボットのソースコードをコピー COPY . . # コンテナが起動したときに実行されるコマンド CMD ["python", "your_bot_script.py"]
- requirements.txt: ボットが必要とするPythonパッケージをリスト化したファイル。
- your_bot_script.py: 実際に取引を行うPythonスクリプト。
2. Docker Composeファイルを作成
次に、複数のボットコンテナを管理するための docker-compose.yml
ファイルを作成します。これは、複数のコンテナを定義し、一括で管理するための設定ファイルです。
例: docker-compose.yml
version: '3.8' services: bot1: build: context: ./bot1 container_name: bot1_container restart: always environment: - ENV_VAR1=value1 volumes: - ./bot1/data:/app/data bot2: build: context: ./bot2 container_name: bot2_container restart: always environment: - ENV_VAR1=value2 volumes: - ./bot2/data:/app/data bot3: build: context: ./bot3 container_name: bot3_container restart: always environment: - ENV_VAR1=value3 volumes: - ./bot3/data:/app/data
- services: 各ボット(コンテナ)の定義を行います。
- context: 各ボットのDockerfileがあるディレクトリを指定します。
- container_name: 各ボットのコンテナ名を指定します。
- environment: 環境変数を指定します。取引所のAPIキーなどを指定する場合に使用します。
- volumes: ホストとコンテナ間でデータを共有するための設定です。
3. プロジェクト構造の設定
以下のようにプロジェクトのディレクトリ構造を設定します。
my-trading-bots/ ├── bot1/ │ ├── Dockerfile │ ├── requirements.txt │ └── your_bot_script.py ├── bot2/ │ ├── Dockerfile │ ├── requirements.txt │ └── your_bot_script.py ├── bot3/ │ ├── Dockerfile │ ├── requirements.txt │ └── your_bot_script.py └── docker-compose.yml
各ボット(bot1, bot2, bot3)は、独自のディレクトリ内に Dockerfile
と必要なスクリプトや設定ファイルを持っています。
4. Dockerコンテナのビルドと実行
- ターミナルで
my-trading-bots
ディレクトリに移動します。
cd /path/to/my-trading-bots
2. Docker Composeを使って、全てのボットコンテナをビルドします。
docker-compose build
3. 全てのボットコンテナを起動します。
docker-compose up -d
-d
オプションは、コンテナをバックグラウンドで実行するためのものです。
5. コンテナの管理
ログの確認: 各ボットのログを確認するには、以下のコマンドを使用します。
docker-compose logs bot1 # bot1のログを確認
コンテナの停止: すべてのコンテナを停止するには、以下のコマンドを使用します。
docker-compose down
コンテナの再起動: あるボットコンテナを再起動するには、以下のコマンドを使用します。
docker-compose restart bot1
まとめ
これで、Dockerを使って複数の自動取引ボットを同じサーバー上で並行して実行できるようになります。各ボットは独立したコンテナで実行されるため、依存関係の衝突を避けつつ、効率的に管理することができます。Docker Composeを使うことで、複数のコンテナを一括でビルド・起動・停止することができ、運用が非常に楽になります。
まとめ
今回は複数のbotを並行して同時に稼働するための方法を調べました。
この方法を土台にして、個別稼働の調整方法も調べる予定です。
今後もこの調子で開発の状況をまとめていきます。