docker gradio 多实例运行环境制作

681 阅读2分钟

制作docker gradio 多实例运行环境

docker python alpine镜像制作

alpine是一个基于musl libc和BusyBox的轻量级Linux发行版,可以运行在资源受限的环境中。

docker pull  python:3.9-alpine 
docker run -it --name py39 python:3.9-alpine 
docker start e94830cb98f0
docker exec -it 4ab70a8ef0b1 sh

alpine安装pip

在alpine中安装pip,您可以在命令行中执行以下步骤,alpine 只有apk 命令

  1. 更新apk索引:
apk update
  1. 安装python3和pip:
apk add python3 py3-pip
  1. 确保pip是最新版本:
pip3 install --upgrade pip

这样,您就可以在alpine Linux上使用pip了。

安装gradio,导出镜像,导入新镜像

注意!

gradio启动项目后默认地址为127.0.0.1;使用docker部署需要将地址修改为0.0.0.0,否则会导致地址访问错误

demo.launch(server_name="0.0.0.0")

前端启动:

$ docker run -it --rm --name gradio-main -p 7860:7860 -p 7861:7861  -v "$PWD":/usr/src/myapp -w /usr/src/myapp gradio python main.py

多进程运行多个python文件

import multiprocessing
import subprocess

def run_script(script):
    subprocess.call(["python", script])

# 创建两个进程,分别运行两个py文件
p1 = multiprocessing.Process(target=run_script, args=("main7860.py",))
p2 = multiprocessing.Process(target=run_script, args=("main7861.py",))

# 启动进程
p1.start()
p2.start()

# 等待进程结束
p1.join()
p2.join()

后台启动:

docker run -d --name gradio-main -p 7860:7860 -p 7861:7861 -v "$PWD":/usr/src/myapp -w /usr/src/myapp gradio  python main.py

常用docker 指令

docker version :显示 Docker 版本信息。

docker 本地镜像导出,导入

导出镜像

docker export 4ab70a8ef0b1> python3.9-alpine-base.tar

导入镜像

docker import - gradio < python3.9-alpine-gradio.tar

gradio 路径访问的方式(未验证)

单用gradio不行, 但是可以使用fastapi, 一个简单的实例如下:
from fastapi import FastAPI
import gradio as gr

app = FastAPI()
def run(app):
import demo_one
import demo_two
app = gr.mount_gradio_app(app,demo_one, path='/one')
app = gr.mount_gradio_app(app,demo_two, path='/two')

if name == 'main':
import uvicorn
uvicorn.run(app)

同时, 你的demo_one.py文件需要:

import xxxx
with gr.Block() as demo_one:

你的代码

这样就可以使用/one , /two进行区分了