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

docker操作包括使用docker制作为接口

 

Docker 化 Flask OCR 应用指南

1. 创建必要的文件

在你的 Flask 应用项目根目录下,你需要创建以下文件:

1.1 Dockerfile

这是一个文本文件,包含了构建 Docker 镜像所需的所有指令

 1 # 使用官方 Python 3.10 (Python 3.13)精简版作为基础镜像,减小镜像体积
 2 FROM python:3.10-slim
 3 
 4 # 设置工作目录
 5 WORKDIR /app
 6 
 7 # 复制依赖文件清单
 8 COPY requirements.txt .
 9 
10 # 安装 Python 依赖
11 # 使用清华 PyPI 镜像加速下载,并清理缓存以减小镜像层大小
12 RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
13 
14 # 复制应用代码到容器中
15 COPY . .
16 
17 # 创建上传目录并确保适当的权限
18 RUN mkdir -p uploads && chmod 755 uploads
19 
20 # 暴露 Flask 应用运行的端口
21 EXPOSE 5000
22 
23 # 设置环境变量,确保 Python 输出直接显示在容器日志中
24 ENV PYTHONUNBUFFERED=1
25 
26 # 设置容器启动时执行的命令
27 CMD ["python", "app.py"]

1.2 requirements.txt

可以使用 pip freeze > requirements.txt命令生成当前环境的完整依赖清单。

1.3 .dockerignore(可选但推荐)

避免将不必要的文件复制到 Docker 镜像中,类似于 .gitignore

 1 .git
 2 .gitignore
 3 __pycache__
 4 *.pyc
 5 *.pyo
 6 *.pyd
 7 .env
 8 venv/
 9 env/
10 .DS_Store
11 README.md
.gitignore

2. 构建 Docker 镜像

在包含 Dockerfile 的目录中,打开终端执行以下命令:  
# 构建镜像,-t 参数给镜像命名
docker build -t flask-ocr-app .

 

这个过程会
  1. 1.下载 Python 3.10 slim 基础镜像
  2. 2.安装 requirements.txt中指定的依赖
  3. 3.将你的应用代码复制到镜像中
  4. 4.设置启动命令

3. 运行 Docker 容器

 

镜像构建完成后,运行容器:
 
1 # 运行容器
2 docker run -d -p 5000:5000 --name ocr-container flask-ocr-app

参数说明

-d: 在后台运行容器(守护模式)
-p 5000:5000: 将主机的 5000 端口映射到容器的 5000 端口
--name ocr-container: 给容器指定一个名称

 

 

4. 修改代码后重新构建服务

1.sudo docker stop flask-ocr-container 2>/dev/null || true   停止flask-ocr-container服务

2.sudo docker rm flask-ocr-container 2>/dev/null || true      删除flask-ocr-container服务

3.sudo docker run -d -p 5000:5000 --name flask-ocr-container flask-ocr-app:latest   重新映射端口

 

 

 sudo docker build --no-cache -t flask-ocr-app . 构建docker容器

sudo docker logs -f flask-ocr-container 查询容器flask-ocr-container 日志

sudo docker restart flask-ocr-container 重启容器flask-ocr-container

sudo docker ps -a | grep flask-ocr-container # 查看容器状态~

sudo docker exec flask-ocr-container netstat -tuln | grep :5000

sudo docker images ps -a 查看镜像

sudo docker  ps -a 查看容器

 

5. 可视化docker


通过 VNC + noVNC 在浏览器中访问(推荐 ✅)

1.创建并运行新容器,在构建时直接安装桌面环境和 VNC:

1 docker run -itd \
2   --name Documentrecognition \
3   -p 6111:80 \          # 将容器的80端口映射到宿主机的6111端口,用于noVNC网页访问
4   -p 5901:5901 \        # 可选:映射VNC端口,用于VNC客户端直接连接
5   ubuntu:22.04

进入容器并安装必要软件​:

 1 docker exec -it Documentrecognition /bin/bash
 2 
 3 # 在容器内执行以下命令
 4 apt update
 5 
 6 # 1. 安装轻量级桌面环境(例如 Xfce)和基础工具
 7 apt install -y xfce4 xfce4-goodies x11vnc xvfb firefox
 8 
 9 # 2. 安装 noVNC(让我们可以通过浏览器访问VNC)
10 apt install -y novnc websockify
11 
12 # 3. 设置VNC密码(这里以密码'password'为例,请务必修改!)
13 mkdir ~/.vnc
14 x11vnc -storepasswd password ~/.vnc/passwd

在容器内启动 VNC 和 noVNC 服务​:

 1 # 启动一个虚拟显示器并在后台运行VNC服务器
 2 Xvfb :1 -screen 0 1920x1080x24 &
 3 export DISPLAY=:1
 4 startxfce4 &
 5 
 6 # 启动VNC服务器,监听5901端口
 7 x11vnc -display :1 -forever -shared -rfbport 5901 -passwd password &
 8 
 9 # 启动noVNC,将VNC的5901端口映射到noVNC的6080端口
10 websockify -D --web=/usr/share/novnc/ 6080 localhost:5901 &

2. 通过浏览器访问

现在,打开你的浏览器,访问:

http://你的宿主机IP地址:6111/vnc.html

例如:http://192.168.1.100:6111/vnc.html

首次连接时需要输入之前设置的 VNC 密码,之后就能看到完整的 Ubuntu 桌面环境了!

http://www.hskmm.com/?act=detail&tid=9457

相关文章:

  • BuildingSystemPlugin使用指南
  • openEuler 24.03 (LTS-SP2)安装mysql5.7.42
  • Trae AI IDE与Gitee MCP深度整合:开启智能协作开发新时代
  • LangChain 入门:从 0 到 1 搞懂 LLM 应用开发框架​
  • [JOI Open 2023] 古代机器 2 / Ancient Machine 2 题解
  • Visual Studio 2022配置fftw第三方库
  • [React] nextjs useSWR导致的死循环,一直重复渲染rerender
  • 使用 Rust 实现的基础的List 和 Watch 机制
  • 解码C语言指针
  • windows下Qt调用fftw库
  • Gitee崛起:国产代码托管平台如何接棒CODING成为开发者新宠
  • flask下的MySQL增查配置
  • AT_agc056_c [AGC056C] 01 Balanced
  • 高效智能(到家服务)管理平台解决方案
  • jenkins如何与shell脚本结合使用
  • 【C++11】深度剖析智能指针 - 教程
  • struct * 初始化和造数据的简洁方式(二叉树,d, *left, *right)(面试)
  • Android抓包
  • 火山引擎多模态数据湖:基于 Daft 与 Lance,构筑 AI 时代数据湖新范式
  • doris窗口函数 LAG()(取上一条)和 LEAD()(取下一条)函数
  • debmirror工具
  • centos7卸载openjdk-java11
  • jenkins的安装和配置
  • 深入解析:【Day 52 】Linux-Jenkins
  • 本土开发者如何选择代码管理工具?Gitee与GitHub深度对比解析
  • MES系统核心组件
  • 易基因:多组学整合分析揭示DNA甲基化与基因组改变在肿瘤进化中的协同驱动机制|Nat Genet/IF29重磅
  • AI 视频模型大比拼(2025年7月版):价格、效果与分辨率
  • 为什么芯片行业需要私有化部署软件?
  • C++ std::string