[英]How to append command to docker-compose.yml without override existing?
在 docker-compose.yml 我有一個服務
app:
image: yiisoftware/yii2-php:7.1-apache
volumes:
- ~/.composer-docker/cache:/root/.composer/cache:delegated
- ./:/app:delegated
ports:
- '80:80'
depends_on:
- db
所以我想在容器啟動時執行命令yii migrate --interactive=0
。 但是如果我只是添加字符串
command: "yii migrate --interactive=0"
它覆蓋yiisoftware/yii2-php:7.1-apache
dockerfile 中已經指定的命令。 如何附加命令,而不是替換? 是否可以?
我已經用谷歌搜索過這個問題,但最流行的解決方案是“創建你自己的 dockerfile”。 我可以在不創建/修改 dockerfile 或 shell 腳本的情況下解決這個問題,只使用 docker-compose 嗎?
為此,您必須在ENTRYPOINT
docker-compose.yml
定義自己docker-compose.yml
。 除了構建自己的 Dockerfile 之外,別無他法。
盡管我正在搜索,但我在此映像的 Dockerfile 中找不到CMD
指令。 所以這可能是正在使用的。
我不熟悉 PHP,因此我無法估計您必須更改哪些內容才能根據您的特定需求運行容器,但這些是您應該查看的要點。
您可以在新命令中包含預先存在的命令。 現在了解這些命令中的所有內容都可以從 sh 或 bash 調用。 因此,通過執行以下操作查找現有命令:
docker image inspect yiisoftware/yii2-php:7.1-apache
然后檢查Config { Command } 中的命令。 (不是 ConatinerConfig。)所以如果現有命令是:
"start-daemon -z foo-bar"
那么你的新命令將是:
sh -c "start-daemon -z foo-bar; yii migrate --interactive=0"
現在,您將擁有現有命令以及新命令和所需的效果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.