控制台.log在 dockerized Node.js / Express 应用程序中不起作用



我已经在docker容器中构建了一个Node.js应用程序,其中包含以下Dockerfile:

FROM node:carbon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]

我正在尝试在快速路由内.log控制台,但是docker run -p 49160:8080 -d之后,控制台不是交互式的,日志根本没有回显。

'use strict';
// Requires
const express = require('express');
// Constants
const PORT = 8080;
const HOST = '0.0.0.0';
// App
const app = express();
// Routes
app.get('/', (req, res) => {
    // This isn't being printed anywhere
    console.log(req);
});
// Start
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

我做错了什么?

从用于运行容器的命令中删除-d

docker run -p 49160:8080

-d选项在后台运行容器,因此您将无法在控制台中看到其输出。

如果要使容器在后台运行,

并且想要访问该容器的 shell,则可以在容器启动并运行后运行以下命令:

docker exec -it <container-name> bash

添加此评论,因为我正在搜索相同的东西,这是谷歌上的第一个结果。

docker logs <container-name>

https://docs.docker.com/engine/reference/commandline/logs/

最新更新