コンテナ内で実行環境を構築する場合、スクリプトを定期的に動かすために、コンテナ内で cron を起動します。
Dockerfile に cron のインストールを追加します。
RUN apt update && apt install -y cron
docker-compose.yml で environment
に PYTHONPATH などの環境変数を指定します。
environment:
- PYTHONPATH=$${PYTHONPATH}:/home/user/modules
Python 側でサーバを起動する際に、subprocess.Popen() で cron を起動します:
subprocess.Popen(['cron', '-f'])
そして、定期実行のスクリプトに引数を追加し、実行対象となるシェルスクリプトを生成して、ジョブを登録します。
注意すべきなのは、環境変数 PYTHONPATH を設定し、Python インタプリタのフルパスを指定する必要があります。