在Docker中部署Rasa

af7jpaap  于 2023-04-29  发布在  Docker
关注(0)|答案(4)|浏览(400)

我是Rasa和Docker的新手,我想在Docker中部署我的rasa项目。我找不到正确的流程进行部署。我从博客和docker视频中了解了部署,并尝试了这样做。
第一步:我必须创建一个包含项目源代码和需求的docker镜像。
Dockerfile

FROM rasa/rasa  
COPY . /chatbot  
WORKDIR /chatbot  
RUN pip install -r requirements.txt  
USER root  
COPY ./actions /app/actions
USER 1001

requirements.txt

pyaml  
flask   
requests  
spacy  
rasa-nlu   
rasa-core   
rasa-core-sdk

第二步:创建Docker-compose。YML

version: "3.0"  
services:  
  rasa:  
    image: rasa/rasa:2.6.3-full  
    ports:   
      - 5005:5005  
    volumes:   
      - ./:/app  
    command:  
      - run  
      - -m  
      - models   
      - --enable-api  
      - --cors   
      - "*"  
      - --debug   
  action_server:  
    image: rasa/rasa_core_sdk:latest  
    ports:  
      - 5055:5055  
    volumes:  
      - ./actions:/app/actions  
   command:  
     - rasa  
     - run  
     - actions

谁能告诉我正确的部署流程。

7vux5j2d

7vux5j2d1#

在系统上安装了docker和docker-compose。
在项目的根目录下创建第一个Dockerfile(只是一个名为“Dockerfile”的新文件),并且应该具有以下内容-

FROM rasa/rasa:2.8.0
WORKDIR '/app'
COPY . /app
USER root
# WORKDIR /app
# COPY . /app
COPY ./data /app/data
RUN  rasa train
VOLUME /app
VOLUME /app/data
VOLUME /app/models
CMD ["run","-m","/app/models","--enable-api","--cors","*","--debug" ,"--endpoints", "endpoints.yml", "--log-file", "out.log", "--debug"]

请注意,您可以在此处更改Rasa版本。
在actions文件夹中创建第二个Dockerfile,并将此内容放在

FROM rasa/rasa-sdk:2.8.0
WORKDIR /app
COPY requirements.txt requirements.txt
USER root
RUN pip install --verbose -r requirements.txt
EXPOSE 5055
USER 1001

请注意,您必须提出要求。txt文件,其中包含您在actions文件夹中安装和使用的python库。
这就是我们需要的所有dockerfiles,现在在根目录中,你可以看到一个名为endpoints的文件。yml.在action_endpoint中将名称localhost更改为action_server(我们将在action server容器的docker-compose文件中注册此名称),它应该看起来像-

action_endpoint:
 url: "http://action_server:5055/webhook"

最后,创建一个docker-compose。yml文件在根目录下,并将这些内容-

version: '3'
services:
    rasa:
      container_name: "rasa_server"
      user: root
      build: 
        context:  .
      volumes:
      - "./:/app"
      ports: 
        - "5005:5005"
    action_server:
      container_name: "action_server"
      build: 
        context: actions
      volumes:
        - ./actions:/app/actions
        - ./data:/app/data
      ports:
        - 5055:5055

在所有这些之后,您可以运行命令

docker-compose up --build

学分:https://forum.rasa.com/t/dockerizing-my-rasa-chatbot-application-that-has-botfront/46096/27

x7yiwoj4

x7yiwoj42#

我看是对的。我遵循了相同的结构,除了action_server中的命令(docker-compose内部。yml)。我跳过了命令部分,它工作得很好。
action-server:图像:Rasa/rasa-sdk:1.10.2卷:- ./actions:/app/actions ports:- 五零五五:五零五五
而在endpoints url中,服务i的名称。即“action_server”只会出现

7jmck4yq

7jmck4yq3#

这也像一个魅力:
docker-compose.yml:

services:
   rasa:
   image: rasa/rasa:3.5.5
   ports:
     - 5005:5005
   volumes:
     - ../RetrieverReader/:/app
   command: 
     - run
     - --enable-api
     - --cors
     - '*'
   action-server:
   build: 
     context: .
     dockerfile: Dockerfile.action-server
   volumes:
     - ../RetrieverReader/actions:/app/actions
   ports:
     - 5055:5055
   command:
     - start
     - -vv
     - --actions
     - actions
     - --cors
     - '*'

Dockerfile。actions-server我刚刚用来安装我的依赖项:

FROM rasa/rasa-sdk:3.5.4
COPY requirements.txt requirements.txt
USER root
RUN python -m pip install --upgrade pip
RUN pip install --verbose -r requirements.txt

当然,您可以使用docker-composition up来构建和启动

docker-compose up --build

如果您想从前端直接访问Action-Server,则action服务器中的命令--cors * 尤为必要

evrscar2

evrscar24#

这看起来是使用docker部署bot的正确方法。你面临的问题是什么?

相关问题