本地项目部署到 Docker 连接的数据库方案

在本指南中,我们将讨论如何在本地项目中使用 Docker 部署应用,并连接到数据库。我们将以一个简单的 Node.js 应用程序为例,演示与 MySQL 数据库的连接过程。

1. 项目背景

在现代开发中,使用 Docker 容器化应用程序已变得越来越流行。Docker 为开发人员提供了封装应用及其依赖项的方式,以简化部署和管理。同时,许多应用需要使用外部数据库,如 MySQL 或 PostgreSQL,来处理数据存储。

2. 准备工作

2.1. 安装 Docker

首先,您需要确保本地已安装 Docker。可以从 [Docker 官网]( 下载并安装 Docker Desktop。

2.2. 创建项目结构

在本地创建一个新的项目目录。该目录将包含所有必要的文件。

mkdir my-docker-app
cd my-docker-app
mkdir src
touch src/index.js
touch Dockerfile
touch docker-compose.yml

3. 编写 Node.js 应用

src/index.js 文件中,我们将创建一个简单的 Node.js 服务器,并连接到 MySQL 数据库。

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

// 创建数据库连接
const connection = mysql.createConnection({
  host: 'db', // Docker Compose 中定义的服务名
  user: 'root',
  password: 'example',
  database: 'testdb'
});

// 连接数据库
connection.connect((err) => {
  if (err) throw err;
  console.log('Connected to MySQL Database!');
});

// 定义一个简单的路由
app.get('/', (req, res) => {
  res.send('Hello Docker!');
});

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

4. 创建 Dockerfile

Dockerfile 中,我们将定义如何构建 Node.js 应用的 Docker 镜像。

# 使用 Node.js 官方镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 复制 package.json 和 package-lock.json
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制源代码
COPY ./src .

# 暴露端口
EXPOSE 3000

# 启动应用
CMD ["node", "index.js"]

5. 创建 Docker Compose 文件

docker-compose.yml 中,我们将定义 Node.js 服务和 MySQL 数据库服务。

version: '3.8'

services:
  app:
    build: .
    ports:
      - '3000:3000'
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: testdb
    ports:
      - '3306:3306'

6. 启动应用

在项目的根目录下运行以下命令以启动 Docker 服务:

docker-compose up --build

此命令将构建并启动应用。您可以通过 http://localhost:3000 访问 Node.js 应用。如果一切正常,您将在控制台中看到 “Connected to MySQL Database!” 的输出。

7. 整体流程图与序列图

为了清晰展现整个过程,以下是整体的甘特图和序列图。

7.1. 甘特图

gantt
    title 项目部署 Gantt 图
    dateFormat  YYYY-MM-DD
    section 构建与部署
    准备项目                :a1, 2023-01-01, 5d
    编写应用代码            :a2, after a1, 5d
    编写 Dockerfile          :a3, after a2, 3d
    编写 docker-compose.yml  :a4, after a3, 2d
    启动 Docker 服务        :a5, after a4, 1d

7.2. 序列图

sequenceDiagram
    participant C as Client
    participant S as Node.js Server
    participant DB as MySQL Database

    C->>S: 发送请求
    S->>DB: 连接至数据库
    DB-->>S: 返回连接状态
    S-->>C: 返回响应

结论

通过本指南,我们展示了如何在本地使用 Docker 部署一个简单的 Node.js 应用,并连接到 MySQL 数据库。使用 Docker 可以使我们的应用更加可移植和易于管理。希望您能够在自己的项目中应用这些知识,实现更高效的开发和部署!如果您有任何问题或需要进一步的帮助,请随时联系我。