繁体   English   中英

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

[英]setting up a docker container with a waiting bash to install npm modules

我正在尝试做一些琐碎的事情。 对于我的开发环境,我希望能够在我的容器中有一个外壳,以便我可以运行npm install或npm run xxx之类的命令。

(我不想在构建过程中安装我的npm模块,因为我想将它们映射到主机,以便我的编辑器能够在主机上找到它们。我不想在主机上执行npm install,因为我没有不想主机必须安装npm)。

因此,即使在生产容器中,我也会指示我的容器运行节点,而在开发人员容器中,我希望有一个始终在等待的bash。

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

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

有任何想法吗?

您可以使用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的工作方式以及如何使用它。 我建议使用此问题中的信息来确定将入口点设置为/bin/bash时为何退出容器。 找出为什么它不按预期运行,将有助于您更好地了解Docker。

我不确定您要运行什么命令,但这是我的猜测:

Bash需要一个tty,因此,如果您尝试在后台运行它而不分配一个要附加的tty,它将自动杀死它。

如果您想在后台运行bash,请确保分配一个tty以便等待。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM