【问题标题】:Create docker container with Node.js/NPM preinstalled but no package.json创建预装了 Node.js/NPM 但没有 package.json 的 docker 容器
【发布时间】:2017-04-06 23:43:16
【问题描述】:

我正在寻找一个安装了 NPM 和 Node.js 的 Docker 映像,它只是一些 *nix 风格。

这张图片

https://hub.docker.com/_/node/

要求存在 package.json 文件,并且 Docker 构建使用 COPY 将 package.json 文件复制过来,并且它还会在构建运行时查找要启动的 Node.js 脚本。

...我只需要一个容器来使用这种技术运行一个 shell 脚本:

docker exec mycontainer /path/to/test.sh

我是通过以下方式发现的:

Running a script inside a docker container using shell script

我不需要 package.json 文件或 Node.js 启动脚本,我想要的只是

  1. 容器图像
  2. Node.js 和 NPM 已安装

有谁知道是否有不需要 package.json 文件的 Node.js / NPM 的 Docker 映像?也许我应该只使用一个普通的旧容器映像,然后自己添加代码来安装 Node?​​p>

【问题讨论】:

  • 谢谢,我只想在容器中运行一些测试。原来我可以使用 package.json 文件的启动脚本来运行有问题的 bash 脚本。但我真的不需要那个 package.json 文件。我唯一需要的东西(1)一个容器,(2)安装了 NPM 和 node.js。
  • 添加了一个答案,似乎可以满足我的需求。

标签: node.js docker dockerfile


【解决方案1】:

好吧,我试着把这个问题变成一个简单的问题,不幸的是没有人能提供一个简单的答案……直到现在!

而不是使用这个基础图像:

FROM node:5-onbuild

我们改用这个:

FROM node:5

我阅读了关于 onbuild 的内容,但无法弄清楚它是关于什么的,但它增加的内容超出了我的用例所需。

以下代码在我们的 Dockerfile 中

# 1. start with this image as a base
FROM node:5

# 2. copy the script from real-life into the container (magic)
COPY script.sh /usr/src/app/ 

# 3. define container entry point which will run our script 
ENTRYPOINT ["/bin/bash", "/usr/src/app/script.sh"]

你像这样构建 docker 镜像:

docker build -t foo .

然后你像这样运行图像,这将“运行入口点”:

docker run -it --rm foo

容器标准输出应该流式传输到您运行 docker run 的终端,这很好(我要求太多了吗?)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 2020-02-08
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多