RASA X connecting to Custom Action Server using Docker (Discussion and Tutorial)

Hi all!

I experimented and believe that there are 2 ways to connect RASA X to Custom Action Server. (Hope this thread is able to help those who are stuck too!)

The first method is to build your custom actions image using Connecting a Custom Action Server with the following docker-compose.override.yml file

version: "3.4"
services:
  app:
    restart: always
    image: <image:tag>
    expose:
      - "5055"
    depends_on:
      - rasa-production

The issue I am having with this is that I will need to push it to Dockerhub and I have some security concerns (Although I can have 1 free private repository). Also, I will need to restart the app container every time I make any changes in the action server in order for RASA X to get the updated changes.

The second method is to mount the action folder as the volume as demonstrated in RASA Masterclass. (Note: Instead of creating a blank actions folder as demonstrated in the tutorial, copy your actions folder in the same directory as your docker-compose file)

version: "3.4"
services:
  app:
    restart: always
    image: "rasa/rasa-sdk:latest"
    volumes: 
      - './actions:/app/actions'
    expose:
      - "5055"
    depends_on:
      - rasa-production

The issue I am having is that I would need to copy the actions folder to the folder where the docker-compose file is every time there is a change in actions and also to restart the app docker.

For those who have deployed RASA X in production with CI/CD pipeline set up, which method is preferred and how did you set up the CD pipeline for it. Apart from these 2 methods, are there other methods that I can explore?

Hope that this thread will be able to gather all useful information that can help others who are looking to deploy RASA X in production!

action server restart

In all config options, you have to restart the action server. If you want a no downtime config, you should take a look at our kubernetes/helm chart based setups. With kubernetes you can configure a pod replica update process so that there is no downtime.

how did you set up the CD pipeline for it

We have a blog post on this topic and you can see a working example pipeline in our financial-demo bot here.