uWSGI と cron を同時に Docker で動かすときのコマンドの順番
March 11, 2018, 6:54 a.m. edited Sept. 15, 2018, 4:51 p.m.Django などを uWSGI で動かす Docker コンテナでは docker-compose.yml に,
command: /usr/local/bin/uwsgi --ini /app/uwsgi.ini --touch-reload=/app/uwsgi.ini
と書くが(これにより touch uwsgi.ini
とすることでアプリケーションを再読み込みできる),このコンテナで同時に cron を動かしたいときがある.その場合は,Dockerfile で
RUN apt-get install -y cron # 今回は Debian GNU/Linux 系を想定
RUN echo "0 3 * * * bash -l hoge.sh" > /etc/cron.d/hoge
のようにした上で,uWSGI と cron を同時に実行するようなコマンドを実行する必要がある.とはいっても supervisor などは必要なく,
command: /bin/bash -c "/usr/sbin/cron && /usr/local/bin/uwsgi --ini /app/uwsgi.ini --touch-reload=/app/uwsgi.ini"
でよい.ここで逆に,
command: /bin/bash -c "/usr/local/bin/uwsgi --ini /app/uwsgi.ini --touch-reload=/app/uwsgi.ini && /usr/sbin/cron"
と書いてしまうと
# /etc/init.d/cron status
* cron is not running
と怒られてしまう(これのせいで悩んだ).おそらく,前者の uwsgi コマンドが終了しないために後者のコマンドがいつまでも実行されないためであろう.
Tags
- #Python (26)
- #量子力学 (23)
- #量子情報 (21)
- #Unity (11)
- #Outer Wilds (11)
- #Mac (9)
- #数学 (8)
- #AoE2 (8)
- #Linux (6)
- #Quantum Zoo (6)
- #意識 (5)
- #シミュレーション (5)
- #NumPy (5)
- #Bash (5)
- #相対論 (4)
- #Docker (4)
- #Android (4)
- #Qiskit (4)
- #Rust (3)
- #PyO3 (3)
- #GitHub (3)
- #Django (2)
- #情報理論 (2)
- #LaTeX (2)
- #AR (2)
- #Git (2)
- #iOS (2)
- #C++ (2)
- #正規表現 (2)
- #電磁気学 (1)
- #Google Drive (1)
- #Overleaf (1)
- #Let's Encrypt (1)
- #ポケモン (1)
- #AdMob (1)
- #Autoya (1)
- #docopt (1)
- #SymPy (1)
- #AWS (1)
- #Twitter (1)
- #URP (1)
- #iMovie (1)
- #論文 (1)
- #PyTorch (1)
- #C# (1)
- #Vim (1)