资讯专栏INFORMATION COLUMN

Doceker部署Node.js

ShevaKuilin / 2611人阅读

摘要:前言项目中会用到做中间层,部署则是用到了,在这里总结记录下部署要点和步骤关于的介绍和安装这里就不赘述了,网上也有很多相关的教程和文章了,需要可自行搜索查看。

前言

    项目中会用到node做中间层,部署node则是用到了docker,在这里总结、记录下部署要点和步骤;关于docker的介绍和安装这里就不赘述了,网上也有很多相关的教程和文章了,需要可自行搜索查看。

项目结构
`-- docker-node
    |-- data
    |-- server
        |-- app.js
        |-- Dockerfile
        |-- process.yml
        |-- package.json
    |-- docker-compose.yml
1、创建Node.js程序

app.js

const express = require("express");
const app = express();

app.get("/", (req, res) => res.send("hello world!"));

app.listen(3008);
2、创建Dockerfile
FROM node:8.9-alpine

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

RUN npm set registry https://registry.npm.taobao.org/

RUN npm install 

CMD ["./node_modules/pm2/bin/pm2-docker", "process.yml"]

从Dockerfile中可以看到我们是通过pm2-docker运行node应用的,利用PM2我们可以监听文件变化,达到应用重启、日志分存等效果;这里我们需要一个process.yml的配置文件,相关用法可以查看PM2文档。

process.yml

apps:
  - script   : "app.js"
    name     : "dokcer-node"
    exec_mode: "fork"
    watch    : true
    instances: 1
    log_date_format : "YYYY-MM-DD HH:mm Z"
    ignore_watch: ["node_modules"]
3、创建docker-compose.yml

生产环境上我们用到往往不只一个容器,我们可以通过一个配置文件来管理多个Docker容器,然后使用docker-compose来启动,停止、重启应用。

docker-compose.yml

version: "3.0"
services:
  server_node:
    container_name: server-node
    build: 
      context: ./server
    volumes:
      - ./server:/usr/src/app
    ports:
      - "3008:3008"
    environment:
      - TZ=Asia/Shanghai

  portainer:
    image: portainer/portainer:1.11.4
    container_name: portainer
    expose:
      - "9000"
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data/portainer:/data
    environment:
      - TZ=Asia/Shanghai
4、启动容器

上述几个文件创建完毕,我们执行下面的命令,则会创建我们的镜像并且启动容器

$ docker-compose -f docker-compose.yml up -d
5、测试

1、访问本地的3008端口

2、测试当代码变化,node自动重启功能,我们把"hello world!"改为"restart!!!!",再次刷新页面

3、利用Portainer管理容器;可视化的界面相比命令行来说,我们可以很方便、快速查看容器日志、容器配置、状态、以及对进行重启、删除等操作;我们访问本地9000端口即可(docker-compese.yml中配置),结果如下。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99359.html

相关文章

  • centos7下Docker安装

    摘要:由于之前没安装过这步跳过。安装使用推荐方法设置的存储库并从中进行安装。设置存储库安装所需的包。这些存储库包含在上面的文件中,但默认情况下处于禁用状态。执行以上命令。 由于很多项目都需要在特定的环境下才能稳定运行,在网上搜索一番后,觉得Doceker是一个很不错的容器化平台,决定学习踩坑,先把Docker安装上吧.Docker有两个版本,社区版(CE),企业版(EE),这里的是社区版。服...

    starsfun 评论0 收藏0
  • 基于阿里云Serverless架构下函数计算的最新应用场景详解(一)

    摘要:如果使用阿里云函数计算,您将高峰期每小时的访问日志,或者低谷期每小时的访问日志交给一个计算函数处理,并将处理结果存到中。下面结合阿里云的函数计算产品来讲解各个应用场景中架构以及如何解决的场景中的痛点。 摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出很多应用场景,适合各行各业,只要对轻计算、高弹性、无状态等场景有诉求的用户都可以通过本文来普及一些基础概...

    Eidesen 评论0 收藏0
  • 回顾Java 发展,看 Docker 与Mesos | 数人云COO谢乐冰@KVM分享实录

    摘要:马拉松会匹配每个和提供的资源,然后通过将任务下发下去。对外暴露的就是负载均衡的某个服务,后面自动将流量转发到某个容器的端口上。还有一直办法是用内网的,这个会维护现有的容器列表端口,并且返回任意一个的端口,页实现了负载均衡和服务发现功能。 演讲嘉宾 数人云COO 谢乐冰 在德国工作十年,回国后加入惠普电信运营商部门,拥有多年项目经验和创业公司工作经验。在数人云负责产品售前和运营,专注行...

    canger 评论0 收藏0

发表评论

0条评论

ShevaKuilin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<