1

我有一个配置了node.js(带有 express)和mongoDB的Docker映像。我在后台运行服务: . 我启动我的 node.js 应用程序:这会产生一个交互式 shell(显示对服务器的请求)。mongodmongod --fork --logpath /var/lib/mongodb.lognpm start

但是,如果我想监视我的 node.js 应用程序所做的数据库更改,每次我都被迫停止节点服务器(ctrl + c)并使用以下命令启动 mongoDB 交互式 shell mongo:。

所以下次如果我想运行我的 node.js 应用程序,我必须停止 mongoDB 交互式 shell (ctrl + c) 并重新运行服务器。

有什么方法可以同时运行node.js interactive shellmongoDB interactive shell可能在两个不同的终端窗口中Docker

下图显示了我的终端的快照。在此处输入图像描述

我正在使用Ubuntu 15.04Docker 版本 1.5.0,构建 a8a31ef

4

2 回答 2

2

我建议不要在同一个容器中运行这些服务。在单独的容器中运行每一个,并用于docker-compose管理构建和运行容器。

docker-compose logs将向您显示每个服务的输出。

在单独的容器中管理服务将使您能够独立修改每个服务,并为您提供更接近生产设置的环境。

于 2015-10-11T19:45:10.130 回答
1

我建议您尝试安装tmux. 您可以将以下内容添加到 Dockerfile 以tmux在容器中使用:

RUN apt-get update && apt-get install -y tmux

tmux将为您提供一个屏幕,该屏幕可以表示具有多个窗格的多个窗口,为您处理 I/O。

或者,您可以使用CTRL+Z, fg, bg, 更改您在前台查看的过程。最终的解决方案可能是docker exec在两个单独的终端中运行。

最后,与您的问题不完全相关,您可以将端口公开 mongod给您的主机并通过本地mongoCLI 客户端或 GUI 客户端(如Robomongo )连接到它。

于 2015-10-11T12:20:47.933 回答