2017-01-12 8 views
0

ドッカー作成を実行すると、Webコンテナとpostgresコンテナが作成されます。 docker-composeで作成された実行中のコンテナ名を動的に取得

私はこれで問題が(適用される新しいマイグレーションを必要とする、ハウスキーピングの仕事、など)は、新しいコンテナを作成している

docker-compose run web python manage.py test 

のようなものを経由して、手動で私のDjangoは実行するテストをトリガーする

私はそれに向かって傾いてるオプションは

docker exec -i -t <containerid> python manage.py test 

のようなものをやってこれは私が実行しなければならないということである新しい問題を紹介し最初にコンテナ名を取得する0。これの全ポイントは、各ビルドのテストを自動的に実行して自動化することであり、手動で実行するdocker psは解決策ではありません。

これで、コンテナIDを動的に取得する方法はありますか、これを行うにはより良い方法がありますか?これは問題ではありません.Docker-composeでコンテナ名を割り当てることができます。

+0

あなたはそれを実行するときは、(例えば) '--name my_container'でコンテナに名前を付けることができます。 – Niloct

+0

https://docs.docker.com/compose/compose-file/#/containername – Niloct

+0

個々のコンテナを実行しているときにこれを行うことができますが、ドッカーの作成を使用しています。 – david

答えて

2

docker-compose execをそのまま使用してください。新しいものを起動するのではなく、すでに実行中のコンテナで実行されます。

docker-compose exec web python manage.py test 
+0

これは決してうまくいきませんでした。ドッカーの作成execウェブのpython manage.pyのテスト "no such command exec" – david

+0

とドッカーのexecウェブのpythonのmanage.pyのテスト "No such container:web" – david

+0

@davidどのようなバージョンのドッカーを使用していますか?私は1.10.0-rc1を持っていて、 'exec'をサポートしています... –

1

あなたはドッキングウィンドウ-compose.ymlファイルにcontainer_nameオプションを使用してコンテナに名前を割り当てることができます。

container_name: container_name

その後、あなたは簡単に使用して、そのコンテナ内のコマンドを実行することができます。

docker exec container_name python manage.py test

ドッカーの作成オプションの詳細については、公式ドキュメントを参照してください。

https://docs.docker.com/compose/compose-file/

関連する問題