【发布时间】:2016-10-23 00:23:40
【问题描述】:
让 docker 在 windows 主机上运行时遇到一些奇怪的问题,但在 linux 主机上却很好。它只是一个可以运行 gulp 的简单节点容器(最终将附加到其他 LAMP 等容器)。
我的 docker-compose.yml
version: '2'
services:
node:
build: ./node
container_name: cont_node
ports:
- "35733:35733"
volumes:
- ~/docker/project/www:/var/www/html/
command: "sh -c 'npm install && bower install && gulp'"
我的 Dockerfile
FROM node:4-onbuild
RUN npm config set registry http://registry.npmjs.org/
# Define working directory.
WORKDIR /var/www/html/
COPY ./package.json /var/www/html/
RUN npm install -g gulp-cli
CMD ["bash"]
所以当我跑步时
docker-compose up node
它返回
Container command 'sh' not found or does not exist.
既然我理解command 命令在容器(而不是主机)上运行,这应该没问题吗?我也用/bin/sh 试过了,也遇到了同样的问题。 /bin/sh 确实存在,如果相关的话,似乎是指向 dash 的符号链接?看起来与我的 linux 主机完全相同。
有什么想法吗?
附带说明,每当我在 linux 主机上使用 docker 时,它的运行就像做梦一样,但是 windows 我总是浪费时间来解决 windows 特定问题,npm 安装似乎无法正常工作或挂起或需要很长时间,我的文档中没有卷的问题等。Windows / boot2docker 上的 docker 是 fubar'ed 还是只有我?
【问题讨论】:
-
@PanagiotisKanavos 不是
command在撰写中只是在容器上运行它?不在主机上? docs.docker.com/compose/compose-file/#command -
对于它的价值,我在 linux 上旋转了它,让 /bin/sh 在那里工作没有任何问题。由于我没有有效的 package.json,我的测试停止了。
-
@BMitch 感谢您的尝试!我让它在 linux 上也能正常工作,这很烦人,为什么 windows 不能玩得很好:( 如果它抱怨没有 package.json 它比我做得更远
-
@Horse 您是直接从 Windows 使用 docker-compose,还是通过 ssh 会话从 docker-machine VM 使用?
-
@VonC 直接从 docker windows 终端,我会尝试 ssh 并稍后从 docker-machine 尝试,看看有什么不同