制作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 命令
- 更新apk索引:
apk update
- 安装python3和pip:
apk add python3 py3-pip
- 确保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进行区分了