Rasa Docker image is too large ,Can any other way to build only new trained models for hosting?

We are done the rasa hosting using docker image and azure kubernetes services.

here initial time it took 1.38gb size and docker push done in 35mins

After some developments , now we are again build the docker image the size will be around 4.8gb and docker pushing time is too long, This is very hard for hosting the rasa server in aks.

If there is any others options to host only newly trained model or any other stuffs will be enough?

Kindly help me out of this burden!!!

Thanks in advance

If you only want to deploy models, you can configure online models.

@Kathir can you briefly mention the steps you are following, so then I can give you better solution for your issue.

Sure @nik202 ,

Steps we are followed to build docker image is,

  • Preparing the docker image using Dockerfile (282 Bytes) dockerignore (45 Bytes) files

  • Uncomment the pipelines and policies in the config.yml file

  • Then open the command terminal and do the conda activate for the project For Ex : conda activate rasa_example

  • Build the docker file using command Docker build -t kathirb4z:rasaexample

  • Once the docker image is build , then we tag the docker and push the image into docker hub. here we are facing long time to push the docker image. because the size of the image is 4.58gb.

we need to minimize this size ,Because in future we develop more things in the rasa and it need to redeploy in AKS at that time size of the image is huge means deployments will be very painful.

Please suggest to minimize the size of the docker image.

@Kathir Ok here is my feedback:

You mentioned that you are using docker and Kubernetes service for the rasa ? But this is more generic local machine process.

Mean, you have created the instance of Ubuntu server on Azure? Right? and then you have install the anaconda and activate the environment and install the rasa 3.0.2 using docker or docker-compose is that right?

As you are pushing on the docker hub registry with the trained model ( I guess ) do investigate the docker image?

Practically, If you are using custom build pipeline using Git or Github then we follow this scenario while push the custom action image or server image on docker registry. Why don’t you directly pull the available docker images from the docker hub? You pushing the image and then pulling again via docker or docker-compose ( this not make any sense to me or I’m missing something here?)

Suggestion: I’d recommend to see the installation process of rasa x 0.42.2 using docker or docker compose on rasa documentation, the you just see the how to build the custom action image using docker-compose.override.yml. You not thinking why he saying this as it have added advantage as you can monitor the bot/user conversation and you can easily scale the bot using CI/CD where different team can easily maintained and manage the work around.

If you have any further doubt please feel free to ask me. Good Luck!

@nik202 ,

We are using windows server not Ubuntu.

Using Docker desktop we build docker image and then proceed this image hosting in kubernetes services.

Moreover we are planning to host in the azure devops pipeline.If there is any reference are there for azure devops pipeline hosting for rasa nlu and action server ?.

To reduce the size and time taken for Docker image pushing, consider implementing incremental updates or using a multi-stage Dockerfile to optimize the build process. Additionally, you can explore options like deploying only the newly trained model or utilizing Docker layers effectively to minimize image size and deployment time on Azure Kubernetes Service (AKS).