簡體   English   中英

如何在不覆蓋現有的情況下將命令附加到 docker-compose.yml?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM