docker部署node项目---打包成镜像

2,702 阅读2分钟

一、首先你需要创建一个node项目

  1. 初始化项目:
    打开终端,导航到你想要创建项目的目录,然后运行以下命令来创建一个新的 Node.js 项目:
   mkdir my-express-app
   cd my-express-app
   npm init -y

这将创建一个新的目录 my-express-app,并在其中初始化一个新的 Node.js 项目。

  1. 安装 Express:
    在项目目录中,运行以下命令来安装 Express:
   npm install express

3. 安装 MySQL:
接下来,安装 MySQL Node.js 客户端:

   npm install mysql

4. 安装 fs-extra:
然后,安装 fs-extra,它是一个扩展了内置 fs 模块的库:

   npm install fs-extra

5. 创建 Express 服务器:
在项目根目录下创建一个名为 index.js 的文件,并添加以下代码来设置一个基本的 Express 服务器:

   const express = require('express');
   const app = express();
   const port = 3000;

   app.get('/', (req, res) => {
     res.send('Hello World!');
   });

   app.listen(port, () => {
     console.log(`Example app listening at http://localhost:${port}`);
   });

6. 运行服务器:
在终端中,运行以下命令来启动你的 Express 服务器:

   node index.js

打开浏览器并访问 http://localhost:3000,你应该会看到 "Hello World!"。

  1. 连接 MySQL 数据库:
    你需要有一个运行中的 MySQL 服务器。在你的 Express 应用中,你可以使用以下代码片段来连接到 MySQL 数据库:
   const mysql = require('mysql');

   const connection = mysql.createConnection({
     host: 'localhost',
     user: 'your_username',
     password: 'your_password',
     database: 'your_database_name'
   });

   connection.connect((err) => {
     if (err) throw err;
     console.log('Connected to MySQL Server!');
   });

确保替换 your_usernameyour_password 和 your_database_name 为你的 MySQL 服务器的实际凭据和数据库名称。

  1. 使用 fs-extra:
    你可以在需要时使用 fs-extra 来执行文件系统操作。例如,要复制文件,你可以:
   const fse = require('fs-extra');

   // Copy file
   fse.copy('source.txt', 'destination.txt')
     .then(() => console.log('File copied successfully!'))
     .catch(err => console.error(err));

9. 添加脚本到 package.json:
为了方便,你可以在 package.json 文件中添加一个启动脚本:

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

现在你可以使用 npm start 来启动你的服务器。

请注意,这些步骤提供了一个基本的 Express 应用程序设置。在实际开发中,你可能需要添加更多的配置,例如中间件、路由、错误处理等。此外,确保在处理数据库时遵循最佳实践,例如使用连接池和避免 SQL 注入攻击。

二、然后在项目的根目录创建一个Dockerfile文件

image.png

三、编写Dockerfile文件

# node版本
FROM node:10-alpine
# node的app.js文件
WORKDIR /app
# 复制npm的依赖文件
COPY package*.json ./
# 项目安装依赖
RUN npm install
# 复制项目的文件
COPY . .
# node服务端口
EXPOSE 8080
# 启动项目
CMD ["npm", "start"]

四、打包镜像

//my-node-app镜像名字
docker build -t my-node-app . 

五、运行镜像

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

六、docker ps -a 查看本地的镜像id:41536440afe3

image.png

七、导出镜像,部署到服务器上


docker export 41536440afe3 > hkzf_server.tar