使用Docker部署Node.js应用程序

本文将向您展示如何在Docker容器中部署Node应用程序。

注意:本教程假定您已安装Docker并可以使用。

步骤1:创建您的Node应用程序

创建一个名为的目录src。我们将使用该目录。创建一个src/package.json包含以下内容的文件:

{
  "name": "hello_world",
  "private": true,
  "version": "0.0.1",
  "description": "Hello world Example",
  "author": "",
  "dependencies": {
        "express": "3.2.4"
   }
}

现在创建一个src/index.js包含以下内容的:

var express = require('express');
var app = express();
app.get('/', function (req, res) {
    res.send('Hello from Docker\n');
});

app.listen(8080);
console.log('Running on http://localhost:8080');

请知道您可以将端口更改8080为任何所需的端口,但是在本示例中,我们将公开此端口以供我们的应用程序使用。创建这两个文件后,即可继续下一步。

步骤2:建立Dockerfile

“ Dockerfile”允许您根据其中提供的指令集来构建和部署Docker映像。创建一个名为的文件Dockerfile,并使用以下内容填充该文件:

FROM centos:latest
MAINTAINER Name Here <username@localhost>
RUN rpm -Uvh http://mirror.pnl.gov/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
RUN yum install nodejs npm -y 
COPY ./src /opt/src
RUN cd /opt/src; npm install
EXPOSE 8080
CMD ["node", "/opt/src/index.js"]

说明:

FROM centos:latest

这将使用名为的图片centos。如果主机上没有可用的映像,则Docker将从其存储库中提取一个映像。

MAINTAINER Name Here <username@localhost>

该说明允许您设置要创建的图像的作者。

RUN rpm -Uvh http://mirror.pnl.gov/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
RUN yum install nodejs npm -y
…
RUN cd /opt/src; npm install

“ RUN”将执行给定的shell命令。在此示例中,它将下载epel-release rpm并进行安装,并从其存储库中安装nodejs和npm。在执行下一个操作之后,它将进入cd项目目录并运行npm install以安装应用程序的依赖项。

COPY ./src /opt/src

将目录(和文件)从主机复制到容器中。

EXPOSE 8080

打开端口8080供外界使用。

CMD ["node", "/opt/src/index.js"]

CMD 将提供容器的默认执行。

完全按照上面的显示方式创建文件后,即可继续执行下一步。

步骤3:建立图片

要生成图像,请运行以下命令:

docker build -t name/application .

这将创建一个存储库名称为的映像name/application。如果没有错误,则可以继续执行下一步。

步骤4:部署和测试应用程序

现在已经完成所有设置,您可以通过运行以下命令来运行映像:

docker run -p 49160:8080 -d name/application

要测试您的应用程序,请从主机运行以下命令:

curl http://172.17.42.1:49160/ 

如果看到,Hello from Docker则说明您已经成功部署了Docker映像。如果要使用浏览器进行测试,请http://[SERVER_IP]:49160从浏览器中进行访问(相应地替换IP地址),您将看到相同的消息。

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息