我有一个rasa-docker compose文件,其中我的rasa映像基于 rasa:1.6.1-spacy-en
version: '3.0'
services:
rasa_movie:
image: myrasa:v3
ports:
- 5005:5005
depends_on:
- duckling
- action_server
command:
- run
- -m
- /app/models
- --cors
- "*"
- --enable-api
- --log-file
- out.log
- -p
- '5005'
action_server:
image: myaction:v1
ports:
- "5055:5055"
command:
- start
- --actions
- actions
duckling:
image: rasa/duckling
ports:
- "8000:8000"
执行 docker-compose up -d 之后,我想连接到已启动的ras服务器的 shell 与机器人进行交互。
我尝试过类似docker exec rasacontainername rasa shell
的操作,但尝试绑定地址('0.0.0.0',5005):地址已被使用时,出现 OSError:[Errno 98]错误,该错误失败。
有没有一种方法可以连接到rasa外壳而无需再次启动rasas服务器?
谢谢。
答案 0 :(得分:0)
要与正在运行的Docker容器进行交互,您可以通过以下方式进行:
docker exec -it <container-name> <command>
在您的特定情况下,应该类似于
docker exec -it rasa_movie rasa shell
答案 1 :(得分:0)
命令行聊天界面直接连接到在 https://github.com/RasaHQ/rasa/blob/2.6.2/rasa/core/run.py#L131 中启动服务器的功能。因此,为了能够连接命令行聊天界面,您需要编写一个小脚本并将其放入例如cmdline_chat.py
,容器(假设 5005 是 rasa 服务器的端口):
import asyncio
import uuid
from rasa.core import constants
from rasa.core.channels import console
asyncio.run(console.record_messages(
server_url=constants.DEFAULT_SERVER_FORMAT.format("http", 5005),
sender_id=uuid.uuid4().hex,
))
然后,运行脚本而不是调用 rasa shell (docker exec -it containername python cmdline_chat.py
)。