本地项目部署到 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 可以使我们的应用更加可移植和易于管理。希望您能够在自己的项目中应用这些知识,实现更高效的开发和部署!如果您有任何问题或需要进一步的帮助,请随时联系我。