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

news2025/1/16 2:01:45

一、安装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目录下就是我们要运行的项目源码。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LinuxBasicsForHackers笔记 --常用Linux命令

在终端中修改用户密码命令:passwd Linux的文件系统是逻辑文件系统。 Linux基本命令 pwd – print working directory. 返回你当前所在目录结构中的位置。 whoami – 查看您当前登录的用户身份。 cd – change directory. 从终端更改目录。 cd / – 移动到根目录…

html电子签名

html电子签名 html5实现手写签名板&#xff0c;点击保存即可生成base64格式的图片 使用H5自带的canvas&#xff0c;无需引入js无需引入别的js 效果图 html代码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"…

监控之Spring Boot Admin

目录 一、Spring Boot Admin 简介 官方网址 简介 二、Spring Boot Admin的使用 启动SBA server 微服务端配置SBA server地址 查看监控信息 一、Spring Boot Admin 简介 官方网址 GitHup网址&#xff1a;GitHub - codecentric/spring-boot-admin: Admin UI for administ…

GEE:梯度卷积

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine(GEE)平台上,进行梯度卷积操作的代码框架、核心函数和多种卷积核,比如 Roberts、Prewitt、Sobel、各向同性算子、Compass算子、拉普拉斯算子、不同方向线性检测算子等。 结果如下图所示, 文章目录 一、常用的梯度…

2024年天津财经大学珠江学院专升本专业课报名缴费操作流程

天津财经大学珠江学院专升本专业课报名缴费操作流程 天津财经大学珠江学院专升本专业课报名就是缴费&#xff0c;只需要使用中国银行交专业课报名费即可。 缴费操作流程如下&#xff1a; 登录中国银行手机 APP—点击“生活”—在界面 最左上角选择定位为“天津市”—点击“生…

电机工厂怎么才能有效的管理生产?

电机工厂要想更有效地管理&#xff0c;可以从以下几个方面入手&#xff1a;采用数字化软件管理工具 数字化软件管理工具可以帮助电机工厂实现工艺流程自动化、数据管理、生产计划排程等。例如&#xff0c;采用ERP&#xff08;企业资源计划&#xff09;系统可以协调管理生产过程…

Javaweb之Vue组件库Element案例异步数据加载的详细解析

4.4.3.6 异步数据加载 4.4.3.6.1 异步加载数据 对于案例&#xff0c;我们只差最后的数据了&#xff0c;而数据的mock地址已经提供&#xff1a;http://yapi.smart-xwork.cn/mock/169327/emp/list 我们最后要做的就是异步加载数据&#xff0c;所以我们需要使用axios发送ajax请…

STlink下载程序不能复位的说明

STLINK在MDK5.28或其他版本中下载程序后不能复位&#xff0c;需要手动按复位键&#xff0c;MCU 才正常运行。 首先判断是不是该MDK版本的问题&#xff0c;按照以下进行 点击魔法棒 点击Debug&#xff0c;Settings 勾选Reset and Run 如果还是不行&#xff0c;取消Enable…

阿里云服务器活动:免费试用ECS,轻松搭建WordPress博客平台,送午睡毯及猫超卡

阿里云服务器免费试用3个月 &#xff0c;搭建WordPress博客平台&#xff0c;还送午睡毯及猫超卡。活动时间截止至12月8日 网址&#xff1a; 阿里云服务器薅羊毛 送午睡毯

vue使用实现录音功能js-audio-recorder

前言 最近项目中需要实现一个录音上传功能&#xff0c;用于语音评论可以上录音。 下载插件&#xff1a; npm i js-audio-recorder完整代码 <template><div style"padding: 20px;"><h3>录音上传</h3><div style"font-size:14px"…

javaee实验:文件上传及截器的使用

目录 文件上传ModelAttribute注解实验目的实验内容实验过程项目结构编写代码结果展示 文件上传 Spring MVC 提供 MultipartFile 接口作为参数来处理文件上传。 MultipartFile 提供以下方法来获取上传的文件信息&#xff1a;  getOriginalFilename 获取上传的文件名字&#x…

12.03 二叉树简单题2

257. 二叉树的所有路径 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5",&q…

人工智能原理复习--不确定推理

文章目录 上一篇不确定推理概述主观Bayes(贝叶斯)方法可信度方法证据理论下一篇 上一篇 人工智能原理复习–确定性推理 不确定推理概述 常识具有不确定性。 常识往往对环境有极强的依存性。 其中已知事实和知识是构成推理的两个基本要素&#xff0c;不确定性可以理解为在缺…

智跃人力资源管理系统GenerateEntityFromTable.aspx接口存在SQL注入漏洞 附POC

@[toc] 智跃人力资源管理系统GenerateEntityFromTable.aspx接口存在SQL注入漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者…

2023.12.03 homework

小学五年级数学&#xff0c;就有x y z&#xff0c;已经和我们念书的时代不一样了&#xff0c;以前我们是初一才有的 教育和工作一样&#xff0c;分析为什么会出现错误&#xff0c;然后如何避免该错误的出现&#xff0c;这个我们家长要关注的&#xff0c;跟工作中如何分析生产中…

ES6 Promise的用法,async/await异步处理同步化

文章目录 一、什么是promise &#xff1f;二、await / async ES7的新规范&#xff0c;异步处理同步化 一、什么是promise &#xff1f; promise是解决异步的方法&#xff0c;本质上是一个构造函数&#xff0c;可以用它实例化一个对象。对象身上有resolve、reject、all&#xff…

Docker下安装可视化工具Portainer

目录 Portainer简介 Portainer安装 Portainer简介 Portainer是一款开源的容器管理平台&#xff0c;它提供了一个易于使用的Web UI界面&#xff0c;可用于管理和监控容器和集群&#xff0c;旨在使容器管理更加简单和可视化&#xff0c;适用于各种规模的容器环境&#xff0c;从…

解决top-k问题--堆排序

目录 TOP-K问题 堆排序 考虑以下情况&#xff1a; 1.在n个数里面找最大的一个数 2.在n个数里面找最大的两个数 3.在n个数中求前k大的数 为什么不用大根堆呢&#xff1f; 代码 时间复杂度 TOP-K问题 即求数据结合中前K个最大的元素或者最小的元素&#xff0c;一般情况下数…

Sakila数据库和World数据库

Sakila数据库和World数据库 安装MySQL8.2的时候多出两个样例数据库 Sakila数据库和World数据库 Sakila数据库是一个关于DVD租赁的样例数据库&#xff0c;用于展示MySQL的各种功能和特性。Sakila数据库中包含了多个表&#xff0c;包括电影、演员、客户、租赁记录等&#xff0c;可…

美甲美睫店预约会员管理小程序作用如何

美甲美睫是美业中较为重要的类目&#xff0c;主要以小摊、门店/连锁形式&#xff0c;随着线上化程度加深&#xff0c;传统线下美业店面临着困境&#xff0c;想要进一步增长及解决痛点&#xff0c;就需要线上数字化运营得到更多生意。 那么通过【雨科】平台搭建美甲美睫店小程序…