DockerでCronを実行したくて、まずは下記のようにDjangoのカスタムコマンドを実行しました。
[code]docker run -i コンテナ名:タグ /usr/bin/python3 /home/docker/code/app/manage.py get_orders > /var/log/get_orders 2>&1[/code]すると、何故か同じコードが3回連続で実行されました。
ログファイルを見ると確かに同じプログラムが3回実行されています。
メールを送信するプログラムだったので同じ人に同じメールを3回送るという非常に鬱陶しい事になっていました。
いろいろ考えて、少しずつ問題を切り分けていったところサーバー側からDockerにコマンドを送ったところだけで問題が再現しました。
そして、最終的にサーバー内のイメージを全部下記のコマンドで削除したところ無事に同じ問題が複数回実行される問題が解決しました。
[訂正]この方法では解決していなかったのでホスト側からDockerに向けてコマンドを実行するというのを諦めて、Dockerコンテナ内でCronを実行するようにしました。
DockerでDjangoとCronを実行する方法 を御覧ください。
[code]docker images -aq | xargs docker rmi
[/code]
コンテナ名:タグ の部分がユニークだと思っていたのですが、そうではないのでしょうか?
コンテナが乱立している状態では コンテナ名:タグ で複数個のコンテナに同時に命令を送ってしまっていたのでしょうか?
結果から言うとそういうことなのかもしれませんがよくわからないので。
わかる方がいましたら是非コメントください!
コメントを残す