首页 > 编程语言 >Docker部署Node应用简单实践

Docker部署Node应用简单实践

时间:2022-08-24 12:00:26浏览次数:128  
标签:Node node 容器 部署 hello 镜像 Docker docker

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

前言

本文将从零至一,介绍如何在云服务器上通过 Docker 容器运行一个简单的Node应用。本文假设读者已经掌握基本的Linux,Docker,Node,Express 知识。

基本步骤

  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即可访问:

image-20220823121637673

原文链接:https://click.aliyun.com/m/1000354798/

本文为阿里云原创内容,未经允许不得转载。

标签:Node,node,容器,部署,hello,镜像,Docker,docker
From: https://www.cnblogs.com/yunqishequ/p/16619380.html

相关文章

  • Sqoop安装部署
    今天进行了Sqoop的安装部署工作。1、导入Sqoop的tar包到/export/server下,并进行解压。cdexport/servers进入相应目录tarzxvfsqoop-1.4.6.bin__hadoop-2.0.4-al......
  • docker 安装pgsql
    1、下载Postgres镜像下载最新版本的Postgres镜像(默认是latest版本):dockerpullpostgres如果想要下载其他版本,比如常用的10版本的话,在镜像后面指定版本:docker......
  • 基于Docker做MySQL主从搭建与Django的读写分离
    基于Docker做MySQL主从搭建主从的作用:写数据数据时使用主库,从库只用来读数据,这样做能够减少数据库压力,主从搭建可以一主一从,也可以是一主多从。mysql主从配置的流程如图......
  • Docker安装Open LDAP并启用syncrepl镜像同步
    简单介绍如何快速通过docker启动openldap服务,并通过syncrepl机制实现目录数据的镜像复制。本文只涉及关键步骤,相关技术的入门请移步入门教程。所有本文的配置和脚本只针对b......
  • 若依vue部署遇到的一些问题
    背景:生产服务器9000端口,更目录/用于跳转到vue打好的包下,/scoreMange-prod-api用于匹配后台接口;在域名映射ip的时候遇到了问题,一级Nginx配置:  二级Nginx配置:  ......
  • docker中的mysql中文乱码解决办法
    博主最近在做谷粒商城,因为要使用docker安装mysql,但是由于安装的时候没有指定mysql的数据库的utf8格式,导致插入的时候就出现了中文是问号的情况,到处百度终于解决,于是打......
  • docker 学习第一篇 Linux 安装docker
    1、下载docker,下载地址https://docs.docker.com/engine/install/centos/2、卸载旧的docker,sudoyumremovedocker\docker-client\......
  • 3090服务器构建docker
    dockerbuild-f/data1/home/liyuanzhou/ubuntu/dockerfile-tliyz_yolo:666.使用dockerfile构建镜像FROMnvcr.io/nvidia/pytorch:21.10-py3RUNaptupdate&&apt......
  • Docker部署jenkins
    https://www.cnblogs.com/hiyong/p/14405561.html1.下载Image[root@server/]#dockerpulljenkins/jenkinsUsingdefaulttag:latestlatest:Pullingfromjenkin......
  • docker compose ipv6的处理
    简介:dockercompose是我常用的容器编排工具,至今没有升级到K8S,汗那么compose的yaml配置的容器如何互联呢?常见的恐怕就是上次折腾nginx的那一次了。一个nginx,反向代理a......