docker安装nodejs,并更改为淘宝源

拉取官方 Node.js 镜像

docker pull node:latest

创建 Dockerfile,并更改 NPM 下载源为淘宝源,设置为全局持久化

# 使用最新版本的Node.js作为基础镜像
FROM node:latest# 设置工作目录为/app
WORKDIR /app
# 更改 NPM 下载源为淘宝源,并设置为全局持久化
RUN npm config set -g registry https://registry.npm.taobao.org
# 将当前目录中的package.json和package-lock.json复制到容器中
COPY package*.json ./# 安装依赖项
RUN npm install# 将当前目录中的所有文件复制到容器中
COPY . .# 暴露端口
EXPOSE 3000
# 启动应用程序
CMD ["npm", "start"]

构建自定义镜像(仅当使用了 Dockerfile 时)

在包含 Dockerfile 的项目根目录下执行构建命令,注意最后的 小数点

docker build -t my-node-app .

运行容器并挂载本地目录

假设你的 Node.js 应用代码位于本地 /opt/module/node/ 目录,你想将此目录挂载到容器中的 /app 目录,以便于在宿主机编辑代码并在容器中实时更新,可以执行以下命令:

docker run -it -p 3000:3000 --name my-node-app -v /opt/module/node/:/app my-node-app
  • -v /opt/module/node/:/app 将本地的 Node.js 应用程序目录挂载到容器内的 /app 目录。
  • -p 3000:3000 映射了宿主机的 3000 端口到容器的 3000 端口。

创建一个简单的 Node.js Web 应用程序(可选)

为了演示,我们可以在本地创建一个简单的 Express 应用。例如,在本地目录 /opt/module/node/ 创建 app.js 文件:

// /opt/module/node/app.js
const express = require('express');
const app = express();
const port = 3000;app.get('/', (req, res) => {res.send('Hello from Node.js in Docker!');
});app.listen(port, () => {console.log(`App is running at http://localhost:${port}`);
});

在容器内安装应用依赖并启动服务

# 进入容器内部
docker exec -it my-node-app bash# 在容器内部安装Express
npm install express# 启动Node.js应用
node app.js

验证安装和部署是否成功

在宿主机上打开浏览器,访问 http://localhost:3000,如果能看到 “Hello from Node.js in Docker!” 的消息,则表明 Node.js 已经在 Docker 容器中成功安装和部署,并且 Web 服务可以通过网络访问。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

让桥梁学会“说话”

背景 2023年7月6日凌晨时分,G5012恩广高速达万段230公里加80米处6号大桥部分桥面发生垮塌,导致造成2车受损后自燃,3人受轻伤。目前,四川省公安厅交通警察总队高速公路五支队十四大队民警已对现场进行双向管制。 作为世界第一桥梁…

Vue介绍和基本使用

0 前端的发展史 1.HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 -> 在浏览器中查看 2.Ajax的出现 -> 后台发送异步请求,Re…

【人工智能】深入了解人工智能的核心算法与应用实践

人工智能 学习AI要看的第一本书人工智能应当以人为本人工智能(第3版)通晓六点,明白人工智能是怎么回事基本概念和历史基础知识基于知识的系统高级专题现在和未来安全和编程 人工智能已经是基础学科 学习AI要看的第一本书 人工智能知识对于当…

使用ArrayList居然用forEach遍历删除元素,该打

通常1-3年工作经验的程序员算是初级程序员,再往后基本上就是在编程领域有了一定经验的高级程序员了。 但是最近公司代码review时,我居然发现一个 5 年工作经验的程序员,使用 ArrayList 居然用 forEach 遍历删除元素? 1、现场还原 由于公司代码有一定敏感,我这里把代码进…

Vue页面传值:Props属性与$emit事件的应用介绍

一、vue页面传值 在Vue页面中传值有多种方式,简单介绍以下两种 通过props属性传递值:父组件在子组件上定义props属性,子组件通过props接收父组件传递的值。通过$emit触发事件传递值:子组件通过$emit方法触发一个自定义事件&#…

EtherCAT主站SOEM -- 13 --Qt-Soem通过界面按键控制 EtherCAT IO模块的io输出

EtherCAT主站SOEM -- 13 --Qt-Soem通过界面按键控制 EtherCAT IO模块的io输出 一 mainwindow.c 文件函数:1.1 自定义PDO配置2.2 主站初始化2.3 去motrorcontrol界面二 motrorcontrol.c 文件三 allvalue.h 文件该文档修改记录:总结一 mainwindow.c 文件函数: mainwindow主界…

【开源】基于JAVA语言的服装店库存管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 服装档案模块2.4 服装入库模块2.5 服装出库模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 服装档案表3.2.3 服装入库表3.2.4 服装出库表 四、系统展示五、核心代码5.…

游戏缺少x3daudio1_7.dll文件怎么办?x3daudio1_7.dll丢失总共有六个解决方法

导语:在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“x3daudio1_7.dll丢失”。那么,x3daudio1_7.dll到底是什么文件呢?它的作用和影响又是什么呢?本文将为您详细介绍x3daudio1_7.dll的相关知…

Softing LinkXpert M3荣获Connect Professional“2023年度产品”

2023年7月21日,Softing IT Networks凭借其LinkXpert M3产品荣获2023年度Connect Professional读者选择的“2023年度产品”奖项。 在信息及通信技术测量类别中,LinkXpert M3从众多竞争者中脱颖而出,最终获得提名并跻身“2023年度产品”之列。该…

Python学习之路——文件部分【文件的读取】

目录 先解释一下引文的答案 一、open()打开函数 二、mode常用的三种基础访问模式 三、读-操作相关方法 (一)read方法 (二)readlines方法 (三)with open 语法 (四)操作汇总 …

mysql原理--InnoDB的Buffer Pool

1.缓存的重要性 对于使用 InnoDB 作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是以 页 的形式存放在 表空间 中的,而所谓的 表空间 只不过是 InnoDB 对…

分布式数据之复制(Replication)

1.简介 1.1简介——使用复制的目的 在分布式系统中,数据通常需要被分散在多台机器上,主要为了达到以下目的: 扩展性,数据量因读写负载巨大,一台机器无法承载,数据分散在多台机器 上可以有效地进行负载均衡…