演示一个简单的 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.json
的 scripts
部分添加 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
总结
- 创建 Node.js 应用:编写一个简单的应用,配置
package.json
。 - 编写 Dockerfile:定义如何构建镜像。
- 构建镜像:使用
docker build
命令创建 Docker 镜像。 - 运行容器:使用
docker run
命令启动容器并运行应用。
这样,你就完成了一个基本的 Node.js 应用的 Docker 化过程。
运行容器之前,需要创建容器吗
不需要手动创建容器。在 Docker 中,运行容器的过程会自动创建一个新的容器实例。你只需要使用 docker run
命令,它会基于指定的镜像创建并启动一个新的容器。例如:
docker run -p 3000:3000 my-node-app
这条命令会:
- 创建 一个基于
my-node-app
镜像的新容器。 - 启动 容器,并将容器的 3000 端口映射到主机的 3000 端口。
所以,通过 docker run
命令,你就完成了容器的创建和启动。