首页 > 解决方案 > 如何在不覆盖现有的情况下将命令附加到 docker-compose.yml?

问题描述

在 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-apachedockerfile 中指定的命令。如何附加命令,而不是替换?可能吗?

我已经用谷歌搜索过这个问题,但最流行的解决方案是“创建你自己的 dockerfile”。我可以在不创建/修改 dockerfile 或 shell 脚本的情况下仅使用 docker-compose 来解决这个问题吗?

标签: dockerdocker-compose

解决方案


为此,您必须ENTRYPOINT docker-compose.yml. 除了构建自己的 Dockerfile 之外,没有其他方法可以解决这个问题。

CMD尽管我正在搜索,但我在此图像的 Dockerfile 中找不到指令。所以可能是正在使用的。

我对 PHP 不熟悉,因此我无法估计您必须更改哪些内容才能运行满足您特定需求的容器,但这些是您应该看看的要点。


推荐阅读