部署node.js Web应用程序以及docker

时间:2016-09-05 17:18:14

标签: node.js ubuntu docker npm npm-install

我们有一个node.js网络应用程序。我们已经使用docker在服务器上部署了它。 它的工作正常,节点版本为0.10.25。但是现在我决定在最新版本的节点6.5.0上运行

为了实现这个目的,我修改了现在看起来如下的docker文件

FROM ubuntu:14.04
RUN echo 'deb http://security.ubuntu.com/ubuntu trusty-security main' | sudo tee -a /etc/apt/sources.list
RUN sudo apt-get update
RUN sudo apt-get install  linux-libc-dev  curl  git-core krb5-multidev libkrb5-dev -y
RUN sudo curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
RUN sudo apt-get install  nodejs -y
RUN sudo ln -sf /usr/bin/nodejs /usr/bin/node
RUN ["/bin/bash", "-c", "node -v"]
RUN sudo npm cache clean
RUN sudo npm install -g bower -y
RUN sudo npm install -g gulp -y
#RUN sudo npm install -g node-sass
#RUN sudo npm install -g eslint -y
#RUN sudo npm install -g htmllint -y
RUN cd /root; git clone -b masterclone  https://consultancy:Admin23@github.com/newapp/web.git
RUN cd /root/web; sudo npm install; sudo bower install --allow-root; gulp clean-build-app-prod
EXPOSE 8000
CMD cd /root/web; NODE_ENV=production node server.js

一切都很顺利,除了以下我认为导致问题的行

   "The command '/bin/sh -c cd /root/web; sudo npm install; sudo bower install --allow-root; gulp clean-build-app-prod' returned a non-zero code: 1"

2 个答案:

答案 0 :(得分:1)

使用官方节点图片。这是一个示例文件。

private void YourMethod()
{
    Process("[txtItalic]This is italic[/txtItalic], this is normal, [txtBold]Bold Text[/txtBold] and now [txtUnderline]Underlined Text[/txtUnderline]. The end.");
}

private void Process(string textWithTags)
{
    MatchCollection matches = Regex.Matches(textWithTags, @"\[(\w*)\](.*)\[\/\1\]");

    int unformattedStartPosition = 0;
    int unformattedEndPosition = 0;
    foreach (Match item in matches)
    {
        unformattedEndPosition = textWithTags.IndexOf(item.Value);

        // Add unformatted text.
        AddText(textWithTags.Substring(unformattedStartPosition, unformattedEndPosition - unformattedStartPosition), FontStyle.Regular);

        // Add formatted text.
        FontStyle style = GetStyle(item.Groups[1]);
        AddText(item.Groups[2].Value, style);

        unformattedStartPosition = unformattedEndPosition + item.Value.Length;
    }

    AddText(textWithTags.Substring(unformattedStartPosition), FontStyle.Regular);
}

private FontStyle GetStyle(Group group)
{
    switch (group.Value)
    {
        case "txtItalic":
            return FontStyle.Italic;
        case "txtBold":
            return FontStyle.Bold;
        case "txtUnderline":
            return FontStyle.Underline;
        default:
            return FontStyle.Regular;
    }
}

private void AddText(string text, FontStyle style)
{
    if (text.Length == 0)
        return;

    richTextBox.SelectionFont = new Font(richTextBox.SelectionFont, style);
    richTextBox.AppendText(text);
}

答案 1 :(得分:0)

将文件基于official NodeJS image可能更简单。对于v6.5,这意味着FROM ubuntu:14.04变为FROM node:6.5

此外,您可能希望使用RUN cd /root/web更改工作目录,而不是反复执行WORKDIR /root/web