当前位置: 首页 > news >正文

若依 FastAPI + Vue3 项目 Docker 部署笔记( 启动器打包教程)

本文记录了将 start.bat 打包成 .exe 启动器的详细教程,适合项目交付或导师演示用。


🧭 一、如何将 start.bat 打包为启动器 .exe(含图标 + 自动打开浏览器)

✅ 1. 创建三大功能脚本

start.bat      → 启动项目(docker compose up -d)
build.bat      → 构建镜像(docker compose build)
restart.bat    → 重置数据库并重启(docker compose down -v) 

🔧 这三个脚本要放在你项目根目录,便于后续统一调用。


✅ 2. 写一个启动器界面:launcher.py

使用 Python 的 tkinter 创建一个简单图形界面:

import tkinter as tk
import subprocess
import webbrowser

def run_script(script_name):
    try:
        subprocess.Popen([script_name], shell=True)
        if script_name == "start.bat":
            webbrowser.open("http://localhost:8080")
    except Exception as e:
        print(f"Error running {script_name}: {e}")

win = tk.Tk()
win.title("RuoYi Docker 启动器")
win.geometry("300x200")
win.resizable(False, False)

tk.Label(win, text="请选择操作", font=("微软雅黑", 12)).pack(pady=15)
tk.Button(win, text="✅ 快速启动项目", width=30, command=lambda: run_script("start.bat")).pack(pady=5)
tk.Button(win, text="🛠 构建镜像", width=30, command=lambda: run_script("build.bat")).pack(pady=5)
tk.Button(win, text="🔄 重置并重建环境", width=30, command=lambda: run_script("restart.bat")).pack(pady=5)

win.mainloop()

 

保存为 launcher.py 

✅ 3. 准备 .ico 图标文件

你可以从 icoconverter.com

上传一张 PNG 图片,转换为 .ico 图标,保存为:

ruoyi.ico

 (我设置的visual.ico)

放在和 launcher.py 同一个目录下。

✅ 4. 使用 PyInstaller 打包为 .exe

打开命令行,切换到 launcher.py 所在目录,执行:

pip install pyinstaller
pyinstaller --noconfirm --onefile --noconsole --icon=ruoyi.ico launcher.py

你将得到:

dist/launcher.exe     ← 可直接分发使用

 (我已改名visual.exe)

✅ 无黑框、图标已设置、点击后可弹窗选择并执行 .bat 脚本。

📦 5. 推荐打包目录结构

RuoYi-Docker-Starter/
├── launcher.exe
├── start.bat
├── build.bat
├── restart.bat
├── docker-compose.yml
├── backend/
├── frontend/

📤 打包建议

将该目录压缩为 RuoYi-Docker-Starter.zip,发送给其他人直接解压即可使用。

注意: 图中多出来的文件我没有删除(用笔划掉的都可以删),要将dist里面的launcher.exe剪切到根目录

 

⚠️ 注意事项

  • 所有 .bat 文件必须与 .exe 在同一目录;

  • 不要把路径设为中文或有空格(易报错);

  • 对方电脑必须安装了 Docker 与 Docker Compose;

  • .ico 文件建议 256x256 像素以内,不能太大。

 

 

http://www.xdnf.cn/news/242461.html

相关文章:

  • 华为云Astro大屏连接器创建操作实例:抽取物联网iotda影子设备数据的连接器创建
  • (B题|矿山数据处理问题)2025年第二十二届五一数学建模竞赛(五一杯/五一赛)解题思路|完整代码论文集合
  • 【音频】Qt6实现MP3播放器
  • 深入自制操作系统(一、Bootloader的实现)
  • 微软与Meta大幅增加人工智能基础设施投入
  • AI大模型基础设施:NVIDIA的用于AI大语言模型训练和推理的几款主流显卡
  • Arduino程序函数从入门到精通
  • 中国发布Web3计划:区块链列为核心基础技术,不排除发展加密资产应用!
  • 2025五一杯B题超详细解题思路
  • Qwen3 发布:优化编码与代理能力,强化 MCP 支持引领 AI 新潮流
  • 在阿里云 Ubuntu 24.04 上部署 RabbitMQ:一篇实战指南
  • 24.Linux中RTC的驱动实验_csdn
  • MATLAB R2024a安装教程
  • Spring MVC 与 FreeMarker 整合
  • Sigmoid函数导数推导详解
  • CSS学习笔记14——移动端相关知识(rem,媒体查询,less)
  • 奇偶ASCII值判断
  • 对计网考研中的信道、传输时延、传播时延的理解
  • python2反编译部分
  • POI从入门到上手(三)-轻松完成EasyExcel使用,完成Excel导入导出.
  • 第 11 届蓝桥杯 C++ 青少组中 / 高级组省赛 2020 年真题,选择题详细解释
  • WPF使用SQLSugar和Nlog
  • 精品推荐-湖仓一体电商数据分析平台实践教程合集(视频教程+设计文档+完整项目代码)
  • OpenHarmony全局资源调度管控子系统之内存管理部件
  • 【STM32单片机】#12 SPI通信(软件读写)
  • IRF2.0IRF3.1
  • 小白dockerfile
  • Linux安全清理删除目录bash脚本
  • 使用scipy求解优化问题
  • Three.js在vue中的使用(一)-基础