Docker 部署Node服务

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 以前部署项目时候总会遇到本地环境和线上环境不一致产生排查困难的问题。在使用window系统的电脑开发学习时,但想要学习linux系统的一些操作或者项目的部署时,还需要一台服务器或者一个虚拟机,而Docker不仅部署方便而且更安全,Docker容器是个比较轻量的,占用资源少,成本低等等众多优势。所以,Docker 势必是程序员必会的一个工具之一。

前言

以前部署项目时候总会遇到本地环境和线上环境不一致产生排查困难的问题。在使用window系统的电脑开发学习时,但想要学习linux系统的一些操作或者项目的部署时,还需要一台服务器或者一个虚拟机,而Docker不仅部署方便而且更安全,Docker容器是个比较轻量的,占用资源少,成本低等等众多优势。所以,Docker 势必是程序员必会的一个工具之一。

以下通过使用Docker部署Node服务来加深学习

Docker部署Node服务

  • 创建Node项目,构建一个index.js文件

    • const Koa = require('koa');
      const app = new Koa();
      ​
      app.use(async ctx => {
        ctx.body = 'Hello Jasen Docker';
      });
      ​
      const port = 8004;
      app.listen(port);
      console.log(`http://localhost:${port}`);
    • 添加Dockerfile, Docker通过读取Dockerfile中的指令自动生成镜像

      • vscode 安装docker插件
      • 按F1 输入:Docker:add Docker Files into Workspace,然后根据相应的选项进入选择,enter 确认
      • Dockfile文件中常用指令:

        • FROM 基础镜像
        • MAINTAINER 维护者信息
        • ENV 设置环境变量
        • RUN 构建镜像时要执行的命令
        • ADD/COPY 文件添加到容器中
        • WORKDIR ==cd ,工作目录
        • VOLUME 指定持久化目录
        • EXPOSE 指定与外界交互的端口
        • CMD:运行命令,容器启动时调用
  • 构建镜像:进入 Dockerfile 所在项目当前目录下,执行以下命令:docker build -t node-proj .
  • 创建一个该镜像的容器:运行命令: docker run -d [--name [name]] [-p [对外端口]:[对内端口]] [业务镜像名]

    • -d : 容器后台执行;--name: 容器名称;-p:端口映射;业务镜像名:image Id 或 仓库REPOSITORY

执行完毕后,通过在浏览器中访问: http://localhost:8004 可以正常在页面显示“ Hello Jasen Docker ”,整个过程成功了。

Docker Compose管理服务

本地项目更新时,镜像怎么更新?

一开始我使用的方式是,先停止容器运行再删除容器,删除镜像,重新 build 然后再重新执行 run。整个操作过于繁琐,如果我有多容器时,更加时增加了工作量。

通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

docker-compose配置文件:

version: '3.4'
​
services:
  dockerNode:
    container_name: docker_web
    image: dockerproj
    build:
      context: .
      dockerfile: ./Dockerfile
    environment:
      NODE_ENV: production
    depends_on:
      - redis
      - db
    ports:
      - 8004:8004
  redis:
    image: redis
  db: 
    image: postgres

执行docker-compose命令,可以对配置的服务创建并启动

docker-compose stop
docker-compose  up -d --build

其中,depends_on 是用于设置依赖关系。

  • docker-compose up :以依赖性顺序启动服务。在以下示例中,先启动 db 和 redis ,才会启动 web。
  • docker-compose up SERVICE :自动包含 SERVICE 的依赖项。在以下示例中,docker-compose up web 还将创建并启动 db 和 redis。
  • docker-compose stop :按依赖关系顺序停止服务。在以下示例中,web 在 db 和 redis 之前停止。
目录
相关文章
kde
|
22天前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
kde
491 4
|
21天前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
90 5
|
2月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
163 12
docker 部署 sftp
|
2月前
|
运维 Linux 数据库
基于 Docker 部署 n8n 指南,新手一看就会
本教程详解如何通过 Docker 快速部署开源自动化工具 n8n,适合新手快速上手。内容涵盖官方部署步骤、常见难点及第三方一键部署方案,助你高效搭建自动化工作流平台。
853 6
kde
|
1月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
kde
537 7
kde
|
1月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
kde
1355 8
kde
|
1月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
kde
326 4
|
弹性计算 Linux Docker
快速搭建Docker服务
Docker 是一个开源的容器引擎,利用ECS快速部署一个Docker服务。
235 0