使用docker的小例子

server/2024/9/22 19:25:44/

演示一个简单的 Node.js 应用的 Docker 化过程。假设我们要创建一个简单的 Node.js 应用,它会在启动时输出 “Hello, Docker!”。

1. 创建 Node.js 项目

步骤 1: 创建项目目录和文件

mkdir my-node-app cd my-node-app

步骤 2: 初始化 Node.js 项目

npm init -y

步骤 3: 创建 index.js 文件,内容如下:

// index.js
const http = require('http');const hostname = '0.0.0.0';
const port = 3000;const server = http.createServer((req, res) => {res.statusCode = 200;res.setHeader('Content-Type', 'text/plain');res.end('Hello, Docker!\n');
});server.listen(port, hostname, () => {console.log(`Server running at http://${hostname}:${port}/`);
});

步骤 4: 在 package.jsonscripts 部分添加 start 命令

"scripts": { "start": "node index.js" }

2. 创建 Dockerfile

步骤 1: 在项目目录中创建 Dockerfile,内容如下:

# 使用 Node.js 官方镜像作为基础镜像
FROM node:20# 设置工作目录
WORKDIR /app# 复制 package.json 和 package-lock.json 并安装依赖
COPY package*.json ./
RUN npm install# 复制应用代码
COPY . .# 暴露应用端口
EXPOSE 3000# 设置容器启动时执行的命令
CMD ["npm", "start"]

3. 构建 Docker 镜像(假设你已经安装好了Docker)

在项目目录中运行以下命令构建 Docker 镜像:

docker build -t my-node-app .

4. 运行 Docker 容器

构建完成后,运行容器并映射端口:

docker run -p 3000:3000 my-node-app

5. 测试应用

打开浏览器或使用 curl 命令访问 http://localhost:3000,你应该会看到输出 “Hello, Docker!”。

curl http://localhost:3000

总结

  1. 创建 Node.js 应用:编写一个简单的应用,配置 package.json
  2. 编写 Dockerfile:定义如何构建镜像。
  3. 构建镜像:使用 docker build 命令创建 Docker 镜像。
  4. 运行容器:使用 docker run 命令启动容器并运行应用。

这样,你就完成了一个基本的 Node.js 应用的 Docker 化过程。

运行容器之前,需要创建容器

不需要手动创建容器。在 Docker 中,运行容器的过程会自动创建一个新的容器实例。你只需要使用 docker run 命令,它会基于指定的镜像创建并启动一个新的容器。例如:

docker run -p 3000:3000 my-node-app

这条命令会:

  1. 创建 一个基于 my-node-app 镜像的新容器
  2. 启动 容器,并将容器的 3000 端口映射到主机的 3000 端口。

所以,通过 docker run 命令,你就完成了容器的创建和启动。


http://www.ppmy.cn/server/118364.html

相关文章

【重学 MySQL】二十七、七种 join 连接

【重学 MySQL】二十七、七种 join 连接 union 的使用UNION 的基本用法示例UNION ALL 的用法 七种 join 连接代码实现语法格式小结 union 的使用 UNION 在 SQL 中用于合并两个或多个 SELECT 语句的结果集,并默认去除重复的行。如果希望包含重复行,可以使…

MySQL——数据类型(二)

目录 一、日期与时间类型 1.1 date 1.2 datetime 1.3 timestamp 二、枚举和联合 2.1 enum 2.2 set 2.2.1 set 的插入 2.2.2 set 的查找 思维导图可以参考如下链接: 数据类型.xmind 夜夜亮晶晶/MySQL - Gitee.com 一、日期与时间类型 1.1 date 日期 yyy…

HTTP 协议的基本格式

HTTP协议("超文本传输协议"),是一个被广泛使用应用层协议,自1991年正式发布HTTP协议以来,HTTP协议就一直在更新,目前已经更新到3.0版本,但是目前主流的依旧是1.1版本,但依旧是一个最主流使用的应…

用Blender来烘培模型材质

通常我们在做三维设计,游戏开发的时候,经常需要从网上下载一些3D模型,这些模型采用的材质分辨率通常都不一样,而我们从性能考虑,需要对材质进行统一的处理,例如把材质都统一为2K的分辨率。 我们可以在Blen…

React两种路由模式的实现原理

React 中常用的两种路由模式是 HashRouter 和 BrowserRouter。它们分别使用不同的方式来管理和监听 URL 变化。以下是这两种路由模式的实现原理。 1. HashRouter HashRouter 使用 URL 的哈希部分(即 # 后面的部分)来保持 UI 和 URL 的同步。哈希部分不…

Kubernetes 网络

Kubernetes 网络详解与常见问题探讨 Kubernetes 是一种广泛使用的容器编排平台,其网络架构是保证集群内外通信顺畅的重要基础。Kubernetes 网络旨在为容器提供灵活、可扩展且隔离的通信机制。在实际的 Kubernetes 集群部署和使用过程中,网络相关的问题常…

基于微信小程序的宿舍报修系统的设计与实现

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的宿…

构建有温度的用户关系:开源 AI 智能名片、链动 2+1 模式与 S2B2C 商城小程序的作用

摘要:本文探讨了在当今商业环境中,不能仅仅依靠产品打造连接,而应通过有温度的营销构建用户关系。引入开源 AI 智能名片、链动 21 模式及 S2B2C 商城小程序等创新元素,阐述它们在营销连接中的作用,强调只有通过营销连接…