我想在docker中公开我的asp.net核心应用程序。但是我不能让NPM工作。我尝试了下面的内容,但我得到的消息是没有找到NPM。但是我安装了nodejs,所以我想它应该可用。
知道我做错了什么吗?
FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr
ADD package.json /tmp/package.json
RUN printf "deb http://ftp.us.debian.org/debian jessie main\n" >> /etc/apt/sources.list
RUN apt-get -qq update && apt-get install -qqy sqlite3 libsqlite3-dev && rm -rf /var/lib/apt/lists/*
RUN apt-get update
RUN apt-get -y install nodejs && cd /tmp && npm install
COPY . /app
WORKDIR /app
RUN ["dnu", "restore"]
EXPOSE 5001/tcp
ENTRYPOINT ["dnx", "-p", "project.json", "web"]
答案 0 :(得分:1)
在linux上,npm必须与nodejs分开安装。 你需要添加:
RUN apt-get -y install npm
答案 1 :(得分:1)
旧版本的Node没有捆绑npm。在某些Linux发行版中,存储库中Node的版本很老,例如在centos上它就像0.10.7。
您的应用程序可能需要安装某个版本的nodejs。如果是这样,则需要在运行之前将相关存储库作为dockerfile的一部分添加到虚拟机中
apt-get -y install nodejs
此链接提供了有关如何在您的发行版上执行此操作的一些详细信息: Stream class
如果另一方面你对你的发行版在其回购中的任何版本的Node感到满意,那么Suresh Koya的回答很好。
答案 2 :(得分:0)
正如你在这里看到的: https://hub.docker.com/r/microsoft/aspnet/~/dockerfile/
FROM mono:4.0.1
FROM debian:wheezy
你为什么要用杰西?
RUN printf "deb http://ftp.us.debian.org/debian jessie main\n" >> /etc/apt/sources.list
FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr
ADD package.json /tmp/package.json
RUN printf "deb http://ftp.us.debian.org/debian jessie main\n" >> /etc/apt/sources.list
RUN apt-get -qq update && apt-get install -qqy sqlite3 libsqlite3-dev && \
apt-get -y install nodejs npm && cd /tmp && npm install && \
rm -rf /var/lib/apt/lists/*
COPY . /app
WORKDIR /app
RUN ["dnu", "restore"]
EXPOSE 5001/tcp
ENTRYPOINT ["dnx", "-p", "project.json", "web"]