封装成开箱即用的docker
创建 Dockerfile文件
FROM registry.cn-beijing.aliyuncs.com/bladeai/multi-agent-backend-base:latest
WORKDIR /app
USER root
# 合并所有系统依赖和 Chrome 安装
RUN apt-get update && apt-get install -y \
wget \
gnupg \
libx11-6 \
libxcomposite1 \
libasound2t64 \
fonts-liberation \
libu2f-udev \
libvulkan1 \
--no-install-recommends \
&& wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
&& apt-get install -y ./google-chrome-stable_current_amd64.deb --no-install-recommends \
&& rm google-chrome-stable_current_amd64.deb \
&& rm -rf /var/lib/apt/lists/*
# 后续步骤保持不变
COPY pyproject.toml uv.lock ./
RUN uv sync --no-cache --no-dev
COPY . .
ENV PATH="/app/.venv/bin:$PATH"
ENV CHROME_PATH="/usr/bin/google-chrome"
EXPOSE 8000
CMD ["uv", "run", "main.py"]
构建docker
docker build -t common-research-browser:v1 .
查看已经创建的 docker 镜像
docker images
warning02@Admin:/mnt/d/workspace/multi-agent$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
common-research-browser v1 e744dae715e9 19 minutes ago 3.12GB
common-research-browser v2 e744dae715e9 19 minutes ago 3.12GB
mcr.microsoft.com/playwright/mcp latest d5f30c953ff6 2 weeks ago 972MB
registry.cn-beijing.aliyuncs.com/bladeai/multi-agent-backend-base latest a904b4cca9bc 6 weeks ago 1.03GB
测试运行docker
docker run -it --name test_browser common-research-browser:v1 /bin/bash
输入 exit 退出 docker
exit
正式启动multi-agent的服务
docker run -d -p 8000:8000 --name research_agent common-research-browser:v1
warning02@Admin:/mnt/d/workspace/multi-agent$ docker run -d -p 8000:8000 --name research_agent common-research-browser:v2
c9b545b505096920c93e458da3c0f499347a78a290343d774adae6531f127703
启动multi-agent的服务,同时将主机的显示接口X11挂载到容器里
bash
docker run -d \
-p 8000:8000 \
--name common_research \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
common-research-browser:v1
端口映射会被警告,直接使用主机网络(--net=host),并且给予容器更高的权限以解决部分资源访问受限等限制(--privileged)
bash
docker run -d \
--name common_research \
--privileged \
--net=host \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
common-research-browser:v1
报错说这个名字的容器已经被 id 为 xxx 的容器使用了
bash
warning02@Admin:/mnt/d/workspace/multi-agent$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
warning02@Admin:/mnt/d/workspace/multi-agent$ docker run -d -p 8000:8000 --name research_agent common-research-browser:v1
docker: Error response from daemon: Conflict. The container name "/research_agent" is already in use by container "7e13b2c08321ee53f0819fd2a9df6db26724dfd5d32e46097cc10ae9b8a3f26e". You have to remove (or rename) that container to be able to reuse that name.
Run 'docker run --help' for more information
执行 docker ps -a 指令,查看所有容器(包括运行的和没运行的)
bash
warning02@Admin:/mnt/d/workspace/multi-agent$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd67c10ed030 common-research-browser:v1 "uv run main.py" 15 hours ago Exited (143) 15 hours ago research_agent_gui
之前已经创建有了,那么,直接使用现有容器
docker start research_agent
如果终端返回容器名,说明容器已经重新启动了
bash
warning02@Admin:/mnt/d/workspace/multi-agent$ docker start research_agent
research_agent
warning02@Admin:/mnt/d/workspace/multi-agent$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e13b2c08321 common-research-browser:v1 "uvicorn server.app:..." 16 hours ago Up 33 seconds 0.0.0.0:8000->8000/tcp, [::]:8000->8000/tcp research_agent
若想进入容器的终端,执行 docker exec 指令
docker exec -it research_agent /bin/bash
输入 exit 退出,没有看到uv run main.py 跑的服务输出的日志,但是 uv run main.py 跑的服务其实仍在进行
输入 docker logs 查看跑的容器中的服务日志
bash
warning02@Admin:/mnt/d/workspace/multi-agent$ docker logs -f research_agent
Downloading jedi (1.5MiB)
Downloading pyright (5.7MiB)
Downloading debugpy (4.0MiB)
Downloaded jedi
Downloaded debugpy
Downloaded pyright
Installed 28 packages in 567ms
[02/03/26 03:05:58] INFO 日志系统已初始化 custom_logger.py:185
[02/03/26 03:06:01] INFO Loading config from: config.py:24
/app/server/configs/config.conf
INFO Loading model config from: config.py:25
/app/server/configs/models.yaml
按 ctrl + c 停止查看日志,但不会停止服务
通过 docker cp 将宿主机的文件,移动到 docker 容器中
docker cp start_chrome.py common_research:/app/agent_templates/common_research_browser
bash
warning02@Admin:/mnt/d/workspace/multi-agent/agent_templates/common_research_browser$ docker cp start_chrome.py common_research:/app/agent_templates/common_research_browser
Successfully copied 6.66kB to common_research:/app/agent_templates/common_research_browser
docker stop 停止之前容器中启动的服务
docker stop common_research
warning02@Admin:/mnt/d/workspace/multi-agent$ docker stop common_research
common_research
删除之前停止的容器
docker rm -f research_agent test_browser
warning02@Admin:/mnt/d/workspace/multi-agent$ docker rm -f research_agent test_browser
research_agent
test_browser
删除之前构建的镜像(先删除使用这些镜像的容器,再删除这些镜像)
docker rmi common-research-browser:v1 common-research-browser:v2