gpt4 book ai didi

node.js - 如何运行 node.js docker 实例并放入自动跟踪日志的 shell

转载 作者:行者123 更新时间:2023-12-02 20:18:48 24 4
gpt4 key购买 nike

所以...

我正在尝试为我的团队在一个未开发的原型(prototype)项目上创建一个优雅的 docker/node 设置。我的团队需要预先安装 Node/NPM 和 Docker CLI,但之后我将使用 NPM 来管理所有内容,并且之前有...

"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"]

...最终将启动 Node 服务器。这对于查看日志和清理容器非常有效,但我想让它变得更好。我想改为使用 -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"
}

...但是我在查找 Node 服务器日志存储在容器或本地主机上的位置以启用此所需工作流时遇到了一些麻烦。出于历史目的,是否有某种方法可以将 STD 重新定向到容器内的某个位置,以及将上面的附加命令扩展为最初跟踪这些日志的方法?

最佳答案

我最终做的只是在后台启动 Node 服务器......

"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 镜像/容器/卷,并运行 nodemon 监视以重新启动服务器,mocha 监视应用程序和测试目录以重新运行测试并不断将结果输出到窗口。

关于node.js - 如何运行 node.js docker 实例并放入自动跟踪日志的 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40622868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com