docker-composeで特定のコンテナが終了したら他のコンテナも終了させる方法
解決したいこと
docker-composeでseleniumとpythonの2つのコンテナを起動させています。
pythonでスクレイピングが終了したらseleniumのコンテナを終了させたい。
コード
docker-compose.yml
version: "3"
services:
selenium:
image: seleniarm/standalone-firefox:4.0.0-beta-1-20210215
ports:
- 4444:4444
- 5900:5900 # VNC Port
shm_size: '2gb'
app:
build: ./app # image:pythonでスクレイピングを行うコンテナ
volumes:
- ./app:/app
environment:
SELENIUM_URL: http://selenium:4444
command: python script.py
depends_on:
- selenium
pythonコンテナの終了後のdocker-compose ps
の結果
NAME COMMAND SERVICE STATUS PORTS
apps_app_1 "python script.py" app exited (0)
apps_selenium_1 "/opt/bin/entry_poin…" selenium running 0.0.0.0:4444->4444/tcp, :::4444->4444/tcp, 0.0.0.0:5900->5900/tcp, :::5900->5900/tcp
pythonのコンテナが終了したら、seleniumコンテナも不要になるため、
pythonのコンテナ終了時あるいは、pythonコンテナの最後にコマンド等でseleniumコンテナに終了命令を出せたらと思っています。
何か良い方法があればご教授いただければと思います。
12:45 追記
docker-compose run app --rm && docker-compose down
にて動作的には満足のいく回答をいただきました。
ただこれだとdetachモードで起動できないのでログがそのまま出力されることと、
コマンド実行後、終了するまでターミナルを開いておく必要があるので、
その辺も含めプログラム上で解決できる方法があればご教授いただければ嬉しいです。
0