【问题标题】:How can you get output from inside a cmd container?如何从 cmd 容器中获取输出?
【发布时间】:2018-12-15 03:42:33
【问题描述】:

我正在设置一个基本的 docker 容器,它在 my-app 文件夹中包含一个 server.js 脚本。

我的 dockerfile 看起来像这样:

#Use node parent image
FROM node:9.6.1

#Set the working directory to /my-app
WORKDIR /my-app


# Make port 80 available to the world outside this container
EXPOSE 80


cmd pwd
RUN npm install


# start app
CMD node server.js

找不到 server.js 文件,我正在尝试通过将 pwd 打印到终端来进行调试。找不到 server.js 文件时出现错误,但 CMD pwd 似乎被忽略了。如何在容器中打印,找出 server.js 无法执行的原因?

【问题讨论】:

标签: docker


【解决方案1】:

您可以使用docker run yourcontainername 来启动您的容器(如果它已停止),看看出了什么问题。

如果您的容器继续运行(它可能不会),您可以使用 docker exec -it yourcontainername bash 进入容器并找出问题所在。

ps:您的 Dockerfile 中可能缺少以下内容:COPY server.js /my-app/

【讨论】:

  • 问题是 Dockerfile 通常应该只有一个 CMD 命令。 (因为 Docker 容器应该只管理 1 个进程)您可以在 Dockerfile 中添加类似 RUN echo $HOME 的内容,然后构建它。在构建过程中,您将获得 pwd 否则会为您提供的输出。
【解决方案2】:

将 Dockerfile 更改为:

FROM node:9.6.1
RUN mkdir -p /my-app
WORKDIR /my-app
COPY . /my-app
RUN npm install
EXPOSE 80
CMD node server.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    相关资源
    最近更新 更多