在Docker容器中安装Flask和MySQL的详细步骤

云信安装大师
90
AI 质量分
27 1 月, 2025
2 分钟阅读
0 阅读

在Docker容器中安装Flask和MySQL的详细步骤

引言

在现代Web开发中,Flask和MySQL是非常流行的组合。Flask是一个轻量级的Python Web框架,而MySQL是一个广泛使用的关系型数据库。为了简化开发环境的搭建,我们可以使用Docker来容器化这两个组件。本文将详细介绍如何在Docker容器中安装和配置Flask和MySQL,并解决一些常见的开发问题。

准备工作

在开始之前,确保你已经安装了以下工具:

  • Docker:用于创建和管理容器。
  • Docker Compose:用于定义和运行多容器Docker应用程序。

如果你还没有安装这些工具,可以参考官方文档进行安装。

详细步骤

1. 创建项目目录

首先,创建一个项目目录来存放我们的Flask应用和Docker配置文件。

代码片段
mkdir flask-mysql-docker
cd flask-mysql-docker

2. 创建Dockerfile

在项目目录中创建一个名为Dockerfile的文件,用于定义Flask应用的Docker镜像。

代码片段
# 使用官方的Python镜像作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录下的所有文件到工作目录
COPY . .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 暴露端口
EXPOSE 5000

# 运行Flask应用
CMD ["flask", "run", "--host=0.0.0.0"]

3. 创建requirements.txt

在项目目录中创建一个名为requirements.txt的文件,列出Flask应用所需的Python包。

代码片段
Flask==2.0.1
mysql-connector-python==8.0.26

4. 创建docker-compose.yml

在项目目录中创建一个名为docker-compose.yml的文件,用于定义和运行Flask和MySQL容器。

代码片段
version: '3.8'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/app
    depends_on:
      - db
    environment:
      - FLASK_ENV=development
      - MYSQL_HOST=db
      - MYSQL_USER=root
      - MYSQL_PASSWORD=password
      - MYSQL_DB=flask_db

  db:
    image: mysql:5.7
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=flask_db
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

5. 创建Flask应用

在项目目录中创建一个名为app.py的文件,作为Flask应用的入口。

代码片段
from flask import Flask
import mysql.connector

app = Flask(__name__)

# 配置MySQL连接
db_config = {
    'host': 'db',
    'user': 'root',
    'password': 'password',
    'database': 'flask_db'
}

@app.route('/')
def index():
    try:
        # 连接数据库
        conn = mysql.connector.connect(**db_config)
        cursor = conn.cursor()
        cursor.execute("SELECT VERSION()")
        version = cursor.fetchone()
        cursor.close()
        conn.close()
        return f"MySQL version: {version[0]}"
    except Exception as e:
        return str(e)

if __name__ == '__main__':
    app.run(host='0.0.0.0')

6. 启动Docker容器

在项目目录中运行以下命令来启动Docker容器。

代码片段
docker-compose up --build

7. 访问Flask应用

打开浏览器,访问http://localhost:5000,你应该会看到MySQL的版本信息。

常见问题及解决方案

1. 数据库连接失败

如果Flask应用无法连接到MySQL数据库,请检查以下几点:

  • 确保docker-compose.yml中的MYSQL_HOSTMYSQL_USERMYSQL_PASSWORDMYSQL_DB配置正确。
  • 确保MySQL容器已经启动并运行。

2. 端口冲突

如果端口50003306已经被占用,可以在docker-compose.yml中修改端口映射。

代码片段
ports:
  - "5001:5000"

3. 数据库数据持久化

docker-compose.yml中,我们使用了volumes来持久化MySQL数据。即使容器被删除,数据也不会丢失。

总结

通过本文的步骤,你已经成功在Docker容器中安装和配置了Flask和MySQL。Docker使得开发环境的搭建变得更加简单和一致,特别是在团队协作中。希望本文能帮助你更好地理解和使用Docker、Flask和MySQL的组合。如果你有任何问题或建议,欢迎在评论区留言。

原创 高质量