我有这样的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。' - 没什么。
任何想法为什么?
答案 0 :(得分:1)
我认为你在这里误解了几件事:
npm install
以在卷中安装依赖项,然后您的应用程序容器将使用该卷。这不包含应用程序映像中的任何依赖项。虽然这可能有用,但这意味着图像并不真正独立运行。当您将此图像发送到生产时,您违反了一份合同,其中说“此应用程序与开发相同”。请注意这一点。npm install
作为最终将退出的服务。当命令退出时,容器停止。此外,web
服务(可能取决于这些依赖关系)可能会在npm install
完成之前开始。您是否有理由不希望composer install
和npm install
作为应用程序构建过程的一部分?
答案 1 :(得分:0)
请勿使用命令:["安装"]
尝试:
命令:install