【Docker实操】创建一个Node服务

一、安装node

  1. 请查看阿里云官网教程:如何快速部署Node.js项目。(注意要在根目录操作)
  2. apt install nodejsapt install npm执行上面两个命名来安装

安装完成后,执行node -vnpm -v,如果出现版本,就是安装成功了。

二、创建项目目录

//如果当前目录在root
mkdir www2
mkdir www2/node
cd www2/node	//进入项目目录

三、创建项目

1、初始化项目

npm init -y
npm i koa -s

2、创建app.js

const Koa = require('koa')
const app = new Koa()
app.use(ctx => {
	ctx.body = 'Hello Docker'
})
app.listen(3000, () => {
	console.log('app started at http://localhost:3000/')
})

3、创建Dockerfile配置文件

#Dockerfile
#制定node镜像的版本
FROM node:10-alpine
#移动当前目录下面的文件到app目录下
ADD . /app/
#进入到app目录下面,类似cd
WORKDIR /app
#安装依赖
RUN npm install
#对外暴露的端口
EXPOSE 3000
#程序启动脚本
CMD ["node", "app.js"]

Dockerfile文件说明:

  1. FROM node:10-alpine:
    • 使用了官方 Node.js 镜像,版本为 10,并基于 Alpine Linux,这是一个轻量级的 Linux 发行版。
  2. ADD . /app/:
    • 将当前目录下的所有文件(除了在.dockerignore中指定的文件)复制到容器的 /app/ 目录中。
  3. WORKDIR /app:
    • 设置容器的工作目录为 /app/,相当于在容器内执行了 cd /app
  4. RUN npm install:
    • 在容器中执行 npm install 命令,安装 Node.js 应用程序所需的依赖项。这假设你的应用程序有一个 package.json 文件,并且依赖项已经在这个文件中定义。
  5. EXPOSE 3000:
    • 声明容器运行时将监听的端口号为 3000。这只是一个声明,并不会自动映射端口到宿主机。在运行容器时,你可能需要使用 -p 选项映射宿主机的端口到容器的端口。
  6. CMD [“node”, “app.js”]:
    • 定义容器启动时执行的命令。在这里,它运行了 node app.js,假设你的应用程序入口文件是 app.js。这是启动 Node.js 应用程序的命令。

4、运行

# 定制镜像
docker build -t node:itfeiniu .
# 运行
docker run -p 8013:3000 -d node:itfeiniu

image-20231203231700900

5、容器内目录说明

按照 Dockerfile 中配置,创建容器后,虚拟机内部根目录下会创建一个app目录,并且会进入app目录安装依赖。

image-20231203232936575

可以看到根目录下的确是有一个app目录,并且app目录下就是我们要运行的项目源码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/214401.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

排序算法介绍(四)快速排序

0. 简介 快速排序(Quick Sort)是一种高效的排序算法,采用了分治的思想。它选择一个基准元素,通过一趟排序将待排序序列分割成独立的两部分,其中一部分的所有元素都比基准元素小,另一部分的所有元素都比基准…

【ArcGIS Pro微课1000例】0044:深度学习--面部模糊(马赛克)

本文讲解ArcGIS Pro中通过深度学习工具实现人脸面部模糊,起到马赛克的作用。 文章目录 一、效果对比二、工具介绍三、案例实现一、效果对比 原始图片: 深度学习后的模糊照片: 二、工具介绍 本工具为ArcGIS Pro工具箱中的深度学习工具中的:使用深度学习分类像素,如下所示…

彻底解决ModuleNotFoundError: No module named ‘exceptions‘【Bug完美解决】

文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结心得项目场景: 根据本文可找到bug原因并彻底解决**ModuleNotFoundError: No module named ‘exceptions‘**Bug 报错: E:\Anconda\python.exe c:\Users\24190\PycharmProjects\pythonProject4py尝试 gong…

Linux4.7、环境变量

个人主页:Lei宝啊 愿所有美好如期而遇 目录 基本概念 见见环境变量 指令原理 常见环境变量及其测试 环境变量相关指令 环境变量组织方式 通过代码获取环境变量 通过系统变量获取环境变量以及设置环境变量 环境变量的全局属性 基本概念 首先,…

【Vulnhub 靶场】【Momentum: 2】【简单】【20210628】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/momentum-2,702/ 靶场下载:https://download.vulnhub.com/momentum/Momentum2.ova 靶场难度:简单 发布日期:2021年06月28日 文件大小:698 MB 靶场作者&#xff1…

TeXworks 初次使用 debug方法

下载Texlive,打开TeXworks editor 编译排版,可能会报很多错: 1. ! Fatal Package fontspec Error: The fontspec package requires either XeTeX or (fontspec) LuaTeX. (fontspec) (fontspec) …

【数据结构】二叉树遍历的非递归实现

前言: 本文使用栈以非递归的形式遍历整颗二叉树,我是通过数组模拟栈来实现的,如果对用数组模拟栈不太熟悉,你可以直接使用Stack类作为栈实现。 前序(先序)遍历: 要求:二叉树节点的打印顺序为:中…

山西电力市场日前价格预测【2023-12-04】

日前价格预测 预测说明: 如上图所示,预测明日(2023-12-04)山西电力市场全天平均日前电价为179.48元/MWh。其中,最高日前电价为362.01元/MWh,预计出现在18:00。最低日前电价为0.00元/MWh,预计出…

Leetcode1094. 拼车

Every day a Leetcode 题目来源:1094. 拼车 解法1:差分数组 对于本题,设 a[i] 表示车行驶到位置 i 时车上的人数。我们需要判断是否所有 a[i] 都不超过 capacity。 trips[i] 相当于把 a 中下标从 fromi 到 toi−1 的数都增加 numPassenge…

游戏配置表的导入使用

游戏配置表是游戏策划的标配,如下图: 那么程序怎么把把这张配置表导入使用? 1.首先,利用命令行把Excel格式的文件转化成Json格式: json-excel\json-excel json Tables\ Data\copy Data\CharacterDefine.txt ..\Cli…

Siemens-NXUG二次开发-Java开发环境配置[20231203]

Siemens-NXUG二次开发-Java开发环境配置[20231203] 1.NX/UG Java API官方开发文档2.安装Java83.安装jetbrain idea3.windows系统环境变量配置4.使用idea创建项目5.NXOpen Java代码生效流程6.API体系简述6.代码示例 1.NX/UG Java API官方开发文档 西门子NX/UG Java api开发文档…

一款自动帮你生成UI界面和代码的AI神器

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 只要描述你想要的UI是什么样的,它就能帮你生成,是不是很神奇? v0使用 AI 模型根据简单的文本提示生成用户界面和代码&#xff…

U盘不仅能在电脑上使用,在手机上也可使用,包括安卓和苹果手机,但苹果的较特殊

许多最好的安卓手机都使用USB-C端口在电脑上充电和来回传输文件,但如果你需要给老板发电子邮件的文件放在闪存驱动器或全尺寸SD卡上呢? 幸运的是,使用廉价的适配器电缆,你可以将USB加密狗或读卡器直接连接到手机上。你甚至可以直接使用USB-C闪存驱动器,以实现更轻松的过程…

Java基础之数组拷贝

Arrays.copyOf 详解 copyOf是Arrays类下面的一个方法,用于拷贝各种数组 以整型数组为例:int [ ] copyOf(int [ ]array,int newLength);第一个参数是想要拷贝到数组,第二个参数是新拷贝得到的数组的大小(不一定非得和原始数组大小一样&…

深层神经网络(第四周)

这里省略了深层神经网络的前向传播和反向传播,内容和之前相似,不做过多描述。若今后需要,可以再补习。 一、为什么使用深层表示 解决问题时其实并不需要很大的神经网络,但是得有深度,得有比较多的隐藏层。这是为什么…

DBS note7 (end):DB Design

目录 一、前言 二、引言 三、Entity-Relationship Models(实体-关系模型) 1、关系约束 三、函数依赖和正则化 1、BCNF分解 2、无损分解 3、依赖关系保留分解 一、前言 略读过一遍CS186,对于CS186来说,绝对不止这 7 篇笔记…

SSM项目实战-登录验证成功并路由到首页面,Vue3+Vite+Axios+Element-Plus技术

1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/sysUser.js import request from "../util/request.js";export const login (…

分布式锁框架Lock4j简单使用

最近项目中使用到了Lock4j的分布式锁组件,小编今天就带大家学习一下该框架,以及如何在我们项目中进行集成使用。 一、简介 Lock4j是一个分布式锁组件,它提供了多种不同的支持以满足不同性能和环境的需求;它基于Spring AOP&#…

SQL Server数据库数据文件的迁移

SQL Server数据库数据文件的迁移 如何将一台电脑中的SQL Server数据库数据文件迁移到另一台电脑上? 一、首先查看数据库文件保存在电脑中的位置; 如下图所示:右键-》属性-》数据库设置;可以找到数据库文件保存位置; …

【Node.js】Node.js环境下载与安装教程(Windows系统)

前言 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,可以让你使用JavaScript进行服务器端编程。本教程将向你展示如何在Windows系统上下载和安装Node.js环境。 下载 首先,你需要下载Node.js环境。 打开Node.js官方网站:https://no…