首页
/ PythonStock项目Docker容器化部署指南

PythonStock项目Docker容器化部署指南

2025-07-07 04:26:51作者:魏侃纯Zoe

项目概述

PythonStock是一个基于Python的股票数据分析系统,该系统通过Docker容器化部署可以大大简化环境配置过程。本文将详细介绍如何使用docker-compose.yml文件来部署PythonStock项目的完整运行环境。

核心服务架构

该docker-compose配置定义了两个主要服务:

  1. stock服务:运行PythonStock应用的主容器
  2. mysqldb服务:MySQL数据库容器,用于存储股票数据

详细配置解析

stock服务配置

stock:
    image: pythonstock/pythonstock:latest
    container_name: stock
    ports:
        - "8888:8888"
        - "9999:9999"
    volumes:
        - "./data/notebooks:/data/notebooks"
        - "./data/logs:/data/logs"
    environment:
        MYSQL_HOST: mysqldb
        MYSQL_USER: root
        MYSQL_PWD: mysqldb
        MYSQL_DB: stock_data
        LANG: zh_CN.UTF-8
        LC_CTYPE: zh_CN.UTF-8
        PYTHONIOENCODING: utf-8
    links:
        - mysqldb:mysqldb
    restart: always

关键点说明

  1. 端口映射

    • 8888端口:通常用于Jupyter Notebook服务
    • 9999端口:用于PythonStock的Web服务
  2. 数据持久化

    • notebooks目录:保存Jupyter Notebook文件
    • logs目录:存储应用日志文件
  3. 中文环境支持

    • 通过LANG和LC_CTYPE环境变量确保系统使用中文UTF-8编码
    • PYTHONIOENCODING确保Python IO使用UTF-8编码
  4. 数据库连接

    • 通过links连接到mysqldb服务
    • 环境变量配置了数据库连接参数

mysqldb服务配置

mysqldb:
    image: mysql:5.7
    container_name: mysqldb
    ports:
        - "3306:3306"
    volumes:
        - "./data/mysqldb/data:/var/lib/mysql"
    environment:
        MYSQL_ROOT_PASSWORD: mysqldb
        MYSQL_DATABASE: stock_data
        TZ: Asia/Shanghai
    command: [
        '--character-set-server=utf8mb4',
        '--collation-server=utf8mb4_general_ci',
        '--max_connections=3000'
    ]
    restart: always

关键点说明

  1. MySQL版本

    • 使用MySQL 5.7版本,稳定性较好
  2. 数据持久化

    • 将MySQL数据目录映射到宿主机,防止容器重启数据丢失
  3. 字符集配置

    • 使用utf8mb4字符集,支持完整的Unicode字符(包括emoji)
    • 对应的排序规则为utf8mb4_general_ci
  4. 性能优化

    • 设置最大连接数为3000,适合股票数据分析场景
  5. 时区设置

    • 设置为Asia/Shanghai时区,符合中国用户使用习惯

部署步骤指南

  1. 准备环境

    • 确保已安装Docker和Docker Compose
    • 创建项目目录结构
  2. 配置文件准备

    • 将上述docker-compose.yml文件保存到项目根目录
    • 创建必要的本地目录:
      mkdir -p ./data/notebooks
      mkdir -p ./data/logs
      mkdir -p ./data/mysqldb/data
      
  3. 启动服务

    docker-compose up -d
    
  4. 验证服务

    • 检查容器状态:docker-compose ps
    • 访问Jupyter Notebook:http://localhost:8888
    • 访问Web服务:http://localhost:9999

常见问题解决方案

  1. 端口冲突

    • 如果8888或9999端口被占用,可修改docker-compose.yml中的端口映射
  2. 中文乱码

    • 确保环境变量中的编码设置正确
    • 检查MySQL字符集配置
  3. 数据库连接失败

    • 确认MySQL容器已正常启动
    • 检查stock服务中的数据库连接参数
  4. 数据持久化问题

    • 确保宿主机目录有正确的读写权限
    • 检查volume映射路径是否正确

最佳实践建议

  1. 数据备份

    • 定期备份./data/mysqldb/data目录中的数据库文件
    • 备份重要的notebook文件
  2. 性能监控

    • 使用Docker stats监控容器资源使用情况
    • 对MySQL进行适当的性能调优
  3. 安全建议

    • 生产环境中应修改默认的MySQL root密码
    • 考虑添加网络限制,只允许特定IP访问
  4. 扩展性考虑

    • 如需处理更大规模数据,可考虑增加MySQL资源配置
    • 可以添加Redis容器作为缓存层

通过本指南,您应该能够顺利部署PythonStock项目的Docker环境,并开始进行股票数据分析工作。这种容器化部署方式不仅简化了环境配置,还提高了系统的可移植性和可维护性。