【问题标题】:How to check logs in running server on docker如何在docker上检查正在运行的服务器的日志
【发布时间】:2020-10-15 15:32:38
【问题描述】:

我开发了应用程序并在 docker 上运行它们。

我想在开发过程中查看日志。

我可以通过docker logs api-server看到他们。

但现在我每次出道都必须发送这个命令。

所以我决定通过以下命令进入容器。

docker exec -it api-server sh

然后我想实时观看日志。

有没有办法在服务器上查看实时日志(例如访问日志)?

api-server 中的Dockerfile 正在关注

FROM node:alpine

WORKDIR /src
COPY package.json .

RUN rm -rf /src/node_modules
RUN rm -rf /src/package-lock.json
RUN apk --no-cache add curl



RUN yarn install

CMD yarn start:debug

package.json 正在关注

"scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },

【问题讨论】:

    标签: docker api npm


    【解决方案1】:

    由于您正在执行docker exec,我假设您正在detached 模式下运行api-server,或者您正在从另一个地方(其他窗口或PC)访问此容器以执行docker exec .

    如果您想要“access.log”类型的行为,您当然可以将docker logs api-server 写入文件。

    看这个答案https://stackoverflow.com/a/48345336 每次api-server 吐出新的标准输出/标准错误时,-f 标志将继续写入此文件,因此您无需继续执行docker logs api-server

    附带说明,对于容器的复杂日志记录和工作流程(尤其是容器资源统计信息),我使用Docker SDK,您可以在其中使用container.logs(stdout=True) 并将其写入文件,以便捕获所有内容不用你做任何事情。

    或者,您可以创建一个脚本,将 stdout/stderr 写入某个网络驱动器或主机之间共享的 docker 卷,然后在您的 Dockerfile 中,将此脚本复制到您的 $HOME/.profile(或 @987654334 @ 取决于你的外壳)。

    【讨论】:

    • 谢谢 作为初学者,我想知道我必须在哪里写docker logs api-server?我试过docker-compose updocker logs -f api-server,但他们没有忽略访问日志。当我开发API 时,这是个大问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2014-01-10
    • 1970-01-01
    相关资源
    最近更新 更多