为什么`docker-compose up`会抛出一个错误,其中`docker run`能够流畅运行
问题描述:
我试图设置一个开发环境&使用Docker生成NodeJS应用程序。对于开发环境,我尝试使用nodemon运行应用程序(因为这会监视文件更改)。但是,当我尝试使用docker-compose up
运行它,我得到以下错误:为什么`docker-compose up`会抛出一个错误,其中`docker run`能够流畅运行
错误:网页无法启动服务网络:OCI运行时错误:container_linux.go:247:启动容器过程中造成“EXEC:\” nodemon \“:$ PATH中未找到可执行文件”
当我运行docker run web-app
(与docker build -t web-app .
生成在web-app图像我已经完全没有问题,我想知道怎么会发生这种不同的行为,以及如何。解决它下面我已经把我得到的文件,以更简单的理解这个问题
Dockerfile
FROM node:latest
# Install nodemon globally
RUN npm i nodemon -g
# Add local directory to /node/web-app
ADD . /node/web-app
# Switch to /node/web-app
WORKDIR /node/web-app
# Install NPM dependencies
RUN npm install
# Run nodemon
CMD ["nodemon", "."]
泊坞窗,compose.yml
version: '2'
services:
web:
build:
context: .
dockerfile: Dockerfile
command:
- nodemon .
答
所以,看到你的评论。我意识到什么是问题。 docker-compose.yml中的command
指令不应该是一个列表。
把它写成字符串:
command: nodemon .
但是,作为同一命令在Dockerfile已经声明,这是没有必要的,以把它放在搬运工,compose.yml
编辑:这是可能的命令作为列表,但你需要seaparate每个参数:
command:
- nodemon
- .
这似乎对我来说太奇怪了。我尝试了一个例子,工作得很好。你确定你在两种情况下运行相同的图像吗? – Robert
嗨@罗伯特我发现了问题,我已经更新了我原来的帖子。在我的docker-compose文件中,我有“command: - nodemon”,并添加该行会引发错误,删除该行可以解决问题。我仍然不明白这有什么不同。 = / – user007