docker compose run¶
使い方¶
$ docker compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] SERVICE [COMMAND] [ARGS...]
補足説明¶
サービスを一度限りのコマンド実行します。
以下のコマンドは、 web
サービスを開始し、コマンドとしての bash
を実行します。
$ docker compose run web bash
新しいコンテナ内で実行されるコマンドは、設定によって定義されたサービス、ボリューム、リンク、その他と共に起動します。しかしながら、2つの重要な点が異なります。
第1に、 run
を指定すると、サービス設定で定義済みのコマンドを上書きします。たとえば、 web
サービスの起動が bash
に設定されていても、 docker compose run web python app.py
によって python app.py
に上書きされます。
第2の違いは、 docker compose run
コマンドではサービス設定で定義したポートを作成しません。これにより、既に開いているポートとの衝突を防ぎます。もしもサービス用のポートを作成し、ホストにマッピングしたければ、 --service-ports
を指定します。
$ docker compose run --service-ports web python manage.py shell
あるいは、docker run を使う時に --publish
か -p
オプションを指定し、手動でポートの割り当てもできます。
$ docker compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell
リンク設定があるサービスを起動する場合には、run 命令は、まずリンクしたサービスが実行中かどうかを確認し、サービスが停止中の場合は起動します。リンクしているサービスがすべて実行中になれば、指定したコマンドの処理を実行します。以下の例のように実行できます。
$ docker compose run db psql -h db -U docker
これは、 db
コンテナにリンクしているインタラクティブな PostgreSQL シェルを開きます。
リンクしたコンテナを開始せずに run 命令を実行したい場合は、 --no-deps
フラグを使います。
$ docker compose run --no-deps web python manage.py shell
コンテナの再起動ポリシーを上書きし、実行後にコンテナを削除したい場合は、 --rm
フラグを使います。
$ docker compose run --rm web python manage.py db upgrade
サービス設定で再起動ポリシーが定義されていても、これはデータベース更新スクリプトを実行し、処理完了後にコンテナを削除します。
オプション¶
名前, 省略形 |
デフォルト |
説明 |
---|---|---|
|
コンテナをバックグランドで実行し、コンテナ ID を表示 |
|
|
イメージの entrypoint を上書き |
|
|
環境変数を設定 |
|
|
ラベルを追加もしくは上書き |
|
|
コンテナに名前を割り当て |
|
|
疑似 TTY の割当を無効化。デフォルトの docker compose run は TTY を割り当て |
|
|
リンクしたサービスを起動しない |
|
|
ホスト上にコンテナのポートを公開 |
|
|
終了時、対象のコンテナを自動削除 |
|
|
コンテナが接続するネットワークに、サービスのネットワーク useAliases を使用 |
|
|
指定したユーザ名や uid で実行 |
|
|
ボリュームをバインド・マウントする |
|
|
コンテナ内の作業ディレクトリ |
関連コマンド¶
コマンド |
説明 |
---|---|
サービスの構築もしくは再構築 |
|
compose ファイルをプラットフォーム固有の形式に変換 |
|
サービス・コンテナとローカル・ファイルシステム間でファイルやフォルダをコピー |
|
サービス用のコンテナを作成 |
|
コンテナやネットワークの停止と削除 |
|
コンテナからリアルタイムにイベントを受信 |
|
実行中のコンテナ内でコマンドを実行 |
|
作成したコンテナが使っているイメージを一覧表示 |
|
サービスコンテナを強制停止 |
|
コンテナからの出力を表示 |
|
実行中の compose プロジェクトを一覧表示 |
|
サービスの一時停止 |
|
ポートを確保している公開ポートを表示 |
|
コンテナを一覧表示 |
|
サービスのイメージを取得 |
|
サービスのイメージを送信 |
|
コンテナの再起動 |
|
停止済みのサービス・コンテナを削除 |
|
サービスを一度限りのコマンドとして実行 |
|
サービスの開始 |
|
サービスの停止 |
|
実行中のプロセスを表示 |
|
サービスの一時停止を解除 |
|
コンテナの作成と開始 |
参考
- docker compose run
https://docs.docker.com/engine/reference/commandline/compose_run/