使用等待bash设置docker容器来安装npm模块

时间:2017-08-09 06:14:36

标签: node.js bash docker docker-compose

我试图做一些非常微不足道的事情。对于我的开发环境,我希望能够在我的容器中有一个shell,这样我就可以运行npm install或npm run xxx等命令。

(我不想在构建期间安装我的npm模块,因为我想将它们映射到主机,以便我的编辑器能够在主机上找到它们。我不想执行npm install on主持人,因为我不希望主持人必须安装npm)。

所以即使在生产容器中我会指示我的容器只运行节点,在我的开发人员容器中我想要一个总是在等待bash。

如果我将入口点设置为/ bin / bash,容器会立即退出。这意味着我不能再连接它(因为它停止了)并且启动它将立即再次退出它。

我尝试编写一个小的.sh来循环并再次启动/ bin / bash,但在我的ENTRYPOINT中使用它会产生一个错误,它无法找到.sh文件,即使我知道它在容器。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用docker exec在给定容器中运行命令。

# Open an interactive bash shell in my_container
docker exec -it my_container bash

或者,您可以使用docker run创建一个新容器来运行给定命令。

# Create a container with an interactive bash shell
# Delete the container after exiting
docker run -it --rm my_image bash

此外,从我的问题来看,你仍然在弄清楚Docker如何工作以及如何使用它。我建议使用this question中的信息来确定将入口点设置为/bin/bash时容器退出的原因。找出原因不符合预期的原因将有助于您更好地了解Docker。

答案 1 :(得分:0)

我不确定你试图运行什么命令,但我的猜测是:

Bash需要一个tty,所以如果你试图在后台运行它而不分配一个来附加它,它会自行杀死它。

如果您想在后台运行bash,请确保为其分配tty等待。

例如,docker run -d -it ubuntu将在后台启动bash终端,以后docker attach可以使用。