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

サービス設定で再起動ポリシーが定義されていても、これはデータベース更新スクリプトを実行し、処理完了後にコンテナを削除します。

オプション

名前, 省略形 デフォルト 説明
--detach , -d   コンテナをバックグランドで実行し、コンテナ ID を表示
--entrypoint   イメージの entrypoint を上書き
--env , -e   環境変数を設定
--labels , -l   ラベルを追加もしくは上書き
--name   コンテナに名前を割り当て
--no-TTY , -T   疑似 TTY の割当を無効化。デフォルトの docker compose run は TTY を割り当て
--no-deps   リンクしたサービスを起動しない
--publish , -p   ホスト上にコンテナのポートを公開
--rm   終了時、対象のコンテナを自動削除
--use-aliases   コンテナが接続するネットワークに、サービスのネットワーク useAliases を使用
--user , -u   指定したユーザ名や uid で実行
--volume , -v   ボリュームをバインド・マウントする
--workdir , -w   コンテナ内の作業ディレクトリ

親コマンド

コマンド 説明
docker Docker CLI のベースコマンド。

関連コマンド

コマンド 説明
docker compose biuld サービスの構築もしくは再構築
docker compose convert compose ファイルをプラットフォーム固有の形式に変換
docker compose cp サービス・コンテナとローカル・ファイルシステム間でファイルやフォルダをコピー
docker compose create サービス用のコンテナを作成
docker compose down コンテナやネットワークの停止と削除
docker compose events コンテナからリアルタイムにイベントを受信
docker compose exec 実行中のコンテナ内でコマンドを実行
docker compose images 作成したコンテナが使っているイメージを一覧表示
docker compose kill サービスコンテナを強制停止
docker compose logs コンテナからの出力を表示
docker compose ls 実行中の compose プロジェクトを一覧表示
docker compose pause サービスの一時停止
docker compose port ポートを確保している公開ポートを表示
docker compose ps コンテナを一覧表示
docker compose pull サービスのイメージを取得
docker compose push サービスのイメージを送信
docker compose restart コンテナの再起動
docker compose rm 停止済みのサービス・コンテナを削除
docker compose run サービスを一度限りのコマンドとして実行
docker compose start サービスの開始
docker compose stop サービスの停止
docker compose top 実行中のプロセスを表示
docker compose unpause サービスの一時停止を解除
docker compose up コンテナの作成と開始