Docker-Compose run命令可以針對服務運行一次性命令,使用run命令可以從具有由服務定義的配置的新容器中啟動,包括卷,連結和其他詳細信息。
語法格式
Usage:
run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...]
SERVICE [COMMAND] [ARGS...]
Options:
-d, --detach 後臺運行,輸出容器名.
--name NAME 到容器中分配一個名稱
--entrypoint CMD 覆蓋鏡像的入口點。
-e KEY=VAL 設置環境變量參數,可以使用多次
-l, --label KEY=VAL 添加或覆蓋一個標籤(可以多次使用)
-u, --user="" 指定運行的用戶
--no-deps 不啟動link服務,只啟動run的服務.
--rm 運行後刪除容器,後臺運行模式除外(-d).
-p, --publish=[] 開放埠
--service-ports compose文件中配置什麼埠,就映射什麼埠.
--use-aliases 使用網絡服務的網絡別名(s)容器連接。
-v, --volume=[] 綁定掛載卷
-T 禁用TTY.
-w, --workdir="" 設置工作目錄
例如,以下命令啟動web服務並bash作為其命令運行。
docker-compose run web bash
您使用的命令run從具有由服務定義的配置的新容器中啟動,包括卷,連結和其他詳細信息。但是,有兩個重要的區別。
首先,通過的命令將run覆蓋服務配置中定義的命令。例如,如果web服務配置以bash開頭,則將其docker-compose run web python app.py覆蓋python app.py。
第二個區別是該docker-compose run命令不會創建服務配置中指定的任何埠。這可以防止埠與已打開的埠發生衝突。如果您確實想要創建服務的埠並將其映射到主機,請指定--service-ports標誌:
docker-compose run --service-ports web python manage.py shell
另外,可以使用--publish或-p選項指定手動埠映射,就像使用時一樣docker run:
docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell
如果啟動使用連結配置的服務,則該run命令首先檢查連結服務是否正在運行,並在停止時啟動該服務。一旦所有連結的服務都在運行,則runexec將執行您傳遞的命令。例如,您可以運行:
docker-compose run db psql -h db -U docker
這將為連結的db容器打開一個交互式PostgreSQL shell 。
如果您不希望run命令啟動連結的容器,請使用--no-deps標誌:
docker-compose run --no-deps web python manage.py shell
如果要在覆蓋容器的重新啟動策略的同時運行後除去該容器,請使用--rm標誌:
docker-compose run --rm web python manage.py db upgrade
這將運行資料庫升級腳本,並在完成運行後刪除容器,即使在服務配置中指定了重新啟動策略也是如此。