Docker部署Node应用简单实践

简介: 本文将从零至一,介绍如何在云服务器上通过 Docker 容器运行一个简单的Node应用。

基本步骤

  1. 本地写好nodejs应用,放到github。
  2. 云服务器安装docker,配置国内镜像加速。
  3. 拉取一个node镜像。
  4. 从github拉取项目代码。
  5. 编写Dockerfile文件,构建镜像。
  6. 根据镜像运行一个容器。
  7. 本地进行访问。

具体步骤

1.编写Node应用

新建项目目录hello,进入目录,初始化项目:

npm  init

安装express模块

npm install express --save

项目根目录下新建 app.js ,当访问时返回Hello,Docker!,监听3000端口。

// app.js
const express = require('express');  
const app = express();
app.get('/', function (req, res) {
 res.send('Hello,Docker!');
});  
app.listen(3000);
console.log('Server is running on http://localhost:3000');

2.安装Docker

远程连接服务器,安装Docker:

yum install -y docker

安装成功以后,编辑/etc/docker/daemon.json 文件,配置国内镜像加速。

这里用到的是阿里云提供的加速服务,需要登录https://dev.aliyun.com/来获取个人专属的加速地址。这里假设加速地址是https://4da6b0g8.mirror.aliyuncs.com

vim /etc/docker/daemon.json

编写以下内容:

{
“registry-mirrors”: [“https://4da6b0g8.mirror.aliyuncs.com“]
}

修改完配置文件应该重启服务。

3.拉取Node镜像

拉取Node镜像

docker pull node:9.2.0

等待镜像拉取成功,可以查看下我们已经有的镜像:

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/node      9.2.0               c1d02ac1d9b4        3 weeks ago         675.6 MB
node                9.2.0               c1d02ac1d9b4        3 weeks ago         675.6 MB

4.部署项目代码

进入/home目录,从github上拉取项目代码:

cd /home
git clone https://github.com/hsyq/hello

这里的github地址要换成自己仓库的地址。

5.编写Dockerfile文件

Dockerfile文件里是一条条能被Linux执行的命令,docker能根据该文件构建镜像。

该文件必须和项目文件放在一起,一般放在项目根目录下,本例中即/home/hello目录下。

cd hello
vim Dockerfile
# 基础镜像为node,版本为v9.2.0
FROM node:9.2.0
# 创建容器内的项目存放目录
RUN mkdir -p /home/nodeapp
WORKDIR /home/nodeapp
#  将Dockerfile当前目录下所有文件拷贝至容器内项目目录并安装项目依赖
COPY . /home/Service
RUN npm install
# 容器对外暴露的端口号,要和node项目配置的端口号一致
EXPOSE 3000
# 容器启动时执行的命令
CMD [ "node", "app.js" ]

6.构建镜像

在项目根目录下执行命令构建对象:

docker build -t hello .

屏幕会按照Dockerfile内的指令一条条执行并显示在屏幕上。

构建完成,查看已有的镜像。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello               latest              b753dcb8208d        4 hours ago         675.6 MB
docker.io/node      9.2.0               c1d02ac1d9b4        3 weeks ago         675.6 MB
node                9.2.0               c1d02ac1d9b4        3 weeks ago         675.6 MB

7.运行容器

通过镜像hello创建一个容器并运行:

docker run -d --name hellocontainer -p 80:3000 hello

-d表示容器会在后台运行;--name 是我们给容器起的名字,这个名字是唯一的;-p表示端口映射,即将容器内的3000端口映射到宿主机器的80端口上,这样外部就可以通过80端口来访问容器内部运行的应用了。

本文的演示没有使用 Nginx 做端口转发,只要服务器开放 80 端口,就能将 80 映射到 node项目容器的3000端口上,对完提供访问服务。

执行命令查看容器的状态:

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS                  NAMES
748be4cfccd9        hello               "node app.js"       25 seconds ago      Up 25 seconds                 0.0.0.0:80->3000/tcp   hellocontainer

此时,node应用已经在容器内跑起来了。我们可以访问了。

8.本地访问

打开本地的浏览器,输入云服务器的公网IP即可访问:

相关文章
|
25天前
|
JavaScript 算法 前端开发
【Docker项目实战】使用Docker部署paopao-ce微社区
【Docker项目实战】使用Docker部署paopao-ce微社区
197 84
【Docker项目实战】使用Docker部署paopao-ce微社区
|
2月前
|
运维 Cloud Native 开发者
Docker:现代化应用开发与部署的神器
Docker:现代化应用开发与部署的神器
185 101
|
16天前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
66 12
docker 部署 sftp
|
17天前
|
运维 Linux 数据库
基于 Docker 部署 n8n 指南,新手一看就会
本教程详解如何通过 Docker 快速部署开源自动化工具 n8n,适合新手快速上手。内容涵盖官方部署步骤、常见难点及第三方一键部署方案,助你高效搭建自动化工作流平台。
310 6
|
7天前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
64 3
|
24天前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
77 13
|
27天前
|
存储 Kubernetes 持续交付
为什么Docker容器化改变了开发与部署?
为什么Docker容器化改变了开发与部署?
|
3月前
|
JavaScript Unix Linux
nvm与node.js的安装指南
通过以上步骤,你可以在各种操作系统上成功安装NVM和Node.js,从而在不同的项目中灵活切换Node.js版本。这种灵活性对于管理不同项目的环境依赖而言是非常重要的。
797 11
|
8月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
7月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
5879 24