mistral/tools/docker/DOCKER_README.rst

5.2 KiB

Using Mistral with Docker

Docker containers provide an easy way to quickly deploy independent or networked Mistral instances in seconds. This guide describes the process to launch an all-in-one Mistral container.

Docker Installation

The following links contain instructions to install latest Docker software:

Build the Mistral Image Manually

Execute the following command from the repository top-level directory:

docker build -t mistral -f tools/docker/Dockerfile .

The Mistral Docker image has one build parameter:

Name Default value Description
BUILD_TEST_DEPENDENCIES false If the BUILD_TEST_DEPENDENCIES equals true, the Mistral test dependencies will be installed inside the Docker image

Running Mistral using Docker Compose

To launch Mistral in the single node configuration:

docker-compose -f tools/docker/docker-compose/infrastructure.yaml \
             -f tools/docker/docker-compose/mistral-single-node.yaml \
             -p mistral up -d

To launch Mistral in the multi node configuration:

docker-compose -f tools/docker/docker-compose/infrastructure.yaml \
             -f tools/docker/docker-compose/mistral-multi-node.yaml \
             -p mistral up -d

The infrastructure docker-compose file contains examples of RabbitMQ, PostgreSQL and MySQL configurations. Feel free to modify the docker-compose files as needed.

The docker-compose Mistral configurations also include the CloudFlow container. It is available at link

The --build option can be used when it is necessary to rebuild the image, for example:

docker-compose -f tools/docker/docker-compose/infrastructure.yaml \
             -f tools/docker/docker-compose/mistral-single-node.yaml \
             -p mistral up -d --build

Configuring Mistral

The Docker image contains the minimal set of Mistral configuration parameters by default:

Name Default value Description
MESSAGE_BROKER_URL rabbit://guest:guest@rabbitmq:5672 The message broker URL
DATABASE_URL sqlite:///mistral.db The database URL
UPGRADE_DB false If the UPGRADE_DB equals true, a database upgrade will be launched before Mistral main process
MISTRAL_SERVER all Specifies which mistral server to start by the launch script.
LOG_DEBUG false If set to true, the logging level will be set to DEBUG instead of the default INFO level.
RUN_TESTS false If the UPGRADE_DB equals true, the Mistral unit tests will be launched inside container

The /etc/mistral/mistral.conf configuration file can be mounted to the Mistral Docker container by uncommenting and editing the volumes sections in the Mistral docker-compose files.

Launch tests inside Container

Build mistral:

docker build -t mistral -f tools/docker/Dockerfile \
      --build-arg BUILD_TEST_DEPENDENCIES=true .

Run tests using SQLite:

docker run -it -e RUN_TESTS=true mistral

or PostgreSQL:

docker run -it \
  -e DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres \
  -e RUN_TESTS=true mistral

Using Mistral Client

The Mistral API will be accessible from the host machine on the default port 8989. Install python-mistralclient on the host machine to execute mistral commands.