docker-compose没有运行命令

时间:2015-09-06 21:29:08

标签: php docker composer-php docker-compose

我有这样的docker-compose:

web:
  build: ../../
  dockerfile: environments/production/Dockerfile
  links:
      - fpm:fpm
      - redis:redis
      - elasticsearch:elasticsearch
      - beanstalkd:beanstalkd
  volumes:
      - /var/cache/nginx
      - ../../:/app:ro
...
composer:
  image: imega/composer
  volumes:
    - ../../:/data
  command: ["install"]
node:
  image: node:slim
  volumes:
    - ../../:/app
  working_dir: /app
  entrypoint: npm
  command: ["install"]

目标是在构建时安装composer和node deps。它应该在理论上起作用,但实际上用容器定义编写的命令不会执行。任何命令。我已经尝试过回声'那里,或者' ls。' - 没什么。

任何想法为什么?

2 个答案:

答案 0 :(得分:1)

我认为你在这里误解了几件事:

  • 您正在运行npm install以在卷中安装依赖项,然后您的应用程序容器将使用该卷。这不包含应用程序映像中的任何依赖项。虽然这可能有用,但这意味着图像并不真正独立运行。当您将此图像发送到生产时,您违反了一份合同,其中说“此应用程序与开发相同”。请注意这一点。
  • 您正在运行npm install作为最终将退出的服务。当命令退出时,容器停止。此外,web服务(可能取决于这些依赖关系)可能会在npm install完成之前开始。

您是否有理由不希望composer installnpm install作为应用程序构建过程的一部分?

答案 1 :(得分:0)

请勿使用命令:["安装"]

尝试:

命令:install