Node.js轻松连接MySQL容器,实现数据互通
node连接mysql容器

首页 2025-07-29 13:50:05



Node.js连接MySQL容器的实战指南 在现代的全栈开发环境中,容器化技术(如Docker)已经成为不可或缺的一部分

    通过容器化,开发者可以轻松地打包、分发和运行应用程序及其依赖项,确保在不同环境中的一致性

    MySQL作为一种流行的关系型数据库管理系统,经常与Node.js一起使用,构建高效、可扩展的后端服务

    本文将详细介绍如何在Node.js应用程序中连接MySQL容器,涵盖从Docker容器的设置到Node.js应用程序的数据库连接配置

     一、环境准备 在开始之前,请确保你的开发环境中已经安装了以下工具: 1.Docker:用于创建和管理容器

     2.Node.js:JavaScript的运行时环境

     3.npm(Node Package Manager):Node.js的包管理工具

     4.MySQL客户端工具(可选):如MySQL Workbench,用于可视化管理和查询数据库

     二、创建MySQL容器 1.拉取MySQL镜像 首先,从Docker Hub拉取官方的MySQL镜像

    在命令行中运行以下命令: bash docker pull mysql:latest 2.运行MySQL容器 接下来,使用`docker run`命令启动一个MySQL容器

    这里,我们将容器命名为`mysql-container`,并设置一些必要的环境变量来配置MySQL服务器,例如`MYSQL_ROOT_PASSWORD`: bash docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest 上述命令做了以下几件事: -`--name mysql-container`:为容器指定一个名称

     -`-e MYSQL_ROOT_PASSWORD=my-secret-pw`:设置MySQL root用户的密码

     -`-d`:以守护进程模式运行容器

     3.验证MySQL容器是否运行 使用以下命令检查容器状态: bash docker ps 你应该能看到类似以下的输出,表明`mysql-container`正在运行: plaintext CONTAINER ID IMAGE COMMANDCREATED STATUS PORTSNAMES mysql:latestdocker-entrypoint.s… Up 0.0.0.0:3306->3306/tcp,33060/tcp mysql-container 三、Node.js应用程序设置 1.创建Node.js项目 在你的工作目录下,创建一个新的Node.js项目: bash mkdir my-node-app cd my-node-app npm init -y 2.安装MySQL客户端库 Node.js连接MySQL数据库通常使用`mysql`或`mysql2`库

    这里我们选择`mysql2`,因为它提供了更好的性能和Promise API支持: bash npm install mysql2 3.创建数据库连接文件 在项目根目录下创建一个名为`db.js`的文件,用于配置和管理数据库连接: javascript const mysql = require(mysql2/promise); async function createConnection(){ const connection = await mysql.createConnection({ host: localhost, user: root, password: my-secret-pw, database: test_db //假设我们连接到一个名为test_db的数据库 }); console.log(Connected to the MySQL server.); return connection; } module.exports ={ createConnection}; 注意:由于MySQL容器运行在Docker中,`host`字段通常应设置为容器的IP地址或Docker网络配置中的服务名称

    但在这里,我们将使用Docker的桥接网络特性,通过`localhost`连接(假设Node.js应用程序也在Docker容器中运行,或者通过Docker Compose配置在同一网络中)

     4.创建示例应用 创建一个名为`app.js`的文件,用于演示如何使用数据库连接: javascript const{ createConnection} = require(./db); (async() =>{ try{ const connection = await createConnection(); // 执行一个简单的查询 const【rows, fields】 = await connection.execute(SELECT1 +1 AS solution); console.log(The solution is:, rows【0】.solution); // 关闭连接 await connection.end(); } catch(error){ console.error(Error connecting to the database:, error); } })(); 四、使用Docker Compose(可选) 为了使Node.js应用程序和MySQL容器更容易管理和通信,我们可以使用Docker Compose

    Docker Compose是一个用于定义和运行多容器Docker应用程序的工具

     1.创建docker-compose.yml文件 在项目根目录下创建一个名为`docker-compose.yml`的文件,并添加以下内容: yaml version: 3.8 services: mysql: image: mysql:latest container_name: mysql-container environment: MYSQL_ROOT_PASSWORD: my-secret-pw MYSQL_DATABASE: test_db ports: - 3306:3306 networks: - app-network app: build: . container_name: my-node-app depends_on: - mysql networks: - app-network networks: app-network: driver: bridge 上述配置做了以下几件事: - 定义了两个服务:`mysql`和`app`

     -`mysql`服务使用官方的MySQL镜像,并设置了一个名为`test_db`的数据库

     -`app`服务构建当前目录下的Dockerfile(我们稍后会创建它)

     - 两个服务都连接到一个名为`app-network`的Docker网络,确保它们可以通过服务名称相互通信

     2.创建Dockerfile 在项目根目录下创建一个名为`Dockerfile`的文件,并添加以下内容: dockerfile 使用官方的Node.js镜像作为基础镜像 FROM node:14 设置工作目录 WORKDIR /usr/src/app 复制package.json文件 COPY package.json ./ 安装项目依赖 RUN n

MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道