如何将一个node.js docker实例放入一个自动加载日志的shell中

所以…

我正在尝试为我的团队在绿地原型项目上创build一个优雅的docker/节点设置。 我的团队将需要事先安装Node / NPM和Docker CLI,但之后我将使用NPM来pipe理所有内容,并且以前有…

"scripts": { "docker": "npm run docker-build && npm run docker-start", "docker-build": "docker build -t docker_foo .", "docker-start": "docker run -it -p 8080:8080 --rm docker_foo", "start": "node server.js" } 

…和Dockerfile包含CMD …

 # Other stuff... EXPOSE 8080 CMD ["npm", "start"] 

最终将启动节点服务器。 这对于查看日志和清理容器非常有效,但是我想把它变得更好。 我想改为在后台使用-d选项启动容器,并附加到容器,而不是使用初始命令拖尾日志来模拟相同的行为,除了当用户终止进程时,它们仍然在容器中他们可以评估容器的当前状态。 这导致我有…

 "scripts": { "docker": "npm run docker-build && npm run docker-start && npm run docker-attach", "docker-build": "docker build -t docker_foo .", "docker-start": "docker run -d -p 8080:8080 --name docker_foo docker_foo", "docker-attach": "docker exec -it docker_foo /bin/ash", "docker-clean": "npm run docker-clean-containers && npm run docker-clean-images", "docker-clean-containers": "docker ps -a -q | xargs docker rm -f -v", "docker-clean-images": "docker images -f 'dangling=true' -q | xargs docker rmi", "start": "node server.js" } 

…但是我在查找节点服务器日志存储在容器或本地主机上以便启用这个所需的工作stream程时遇到了一些麻烦。 有什么方法可以将STDredirect到容器内部的某个位置,以用于历史目的,还有一种方法可以将我的attach命令展开到最初拖曳那些日志?

我最终做的只是在后台启动节点服务器…

 "scripts": { "prebuild": "npm run clean", "build": "docker build -t docker_foo .", "clean": "npm run clean:containers && npm run clean:images && npm run clean:volumes", "clean:containers": "docker ps -a -q | xargs docker rm -f -v", "clean:images": "docker images -f 'dangling=true' -q | xargs docker rmi", "clean:volumes": "docker volume ls -qf dangling=true | xargs docker volume rm", "prerun": "npm run build", "run": "docker run -d -p 8080:8080 --name docker_foo -v $(pwd)/app:/usr/src/docker_foo/app -v $(pwd)/test:/usr/src/docker_foo/test docker_foo", "start": "nodemon --watch app server.js", "logs": "docker logs -f admin_api", "pretest": "npm run build", "test": "docker run -p 8080:8080 --name docker_foo -it --rm docker_foo node_modules/.bin/istanbul cover node_modules/.bin/_mocha", "prewatch": "npm run run", "watch": "docker exec -it docker_foo node_modules/.bin/nodemon --exec \"node_modules/.bin/_mocha -w\"" } 

…所以我可以运行“npm run run”,它会在后台运行我的docker实例,其中服务文件系统覆盖了我自己的主机,被nodemon监视,用于快速应用程序开发的文件更改,然后运行“npm运行日志“,以便在开发过程中结束日志。

或者,我现在可以运行“npm run watch”来清理Docker镜像/容器/卷,重新构build并运行nodemon,以重新启动服务器,并观察应用程序和testing目录以重新运行testing并不断将结果输出到窗口。