diff --git a/.dockerignore b/.dockerignore
index 0d2ccf742..51ead7c27 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -35,6 +35,8 @@ pip-log.txt
# Unit test / coverage reports
.coverage
+.coverage.*
+.stestr
.tox
nosetests.xml
cover/*
diff --git a/.gitignore b/.gitignore
index 115157ee4..9a133ff9b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,6 +27,7 @@ pip-log.txt
.tox
nosetests.xml
cover/*
+.coverage.*
.testrepository/
.stestr/
subunit.log
diff --git a/tools/docker/DOCKER_README.rst b/tools/docker/DOCKER_README.rst
index ec5effc80..878217aba 100644
--- a/tools/docker/DOCKER_README.rst
+++ b/tools/docker/DOCKER_README.rst
@@ -1,30 +1,28 @@
Using Mistral with Docker
=========================
-In order to minimize the work needed to run the current Mistral code, or
-be able to spin up independent or networked Mistral instances in seconds,
-Docker containers are a very good option. This guide describes the process
+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
+Docker Installation
-------------------
-The links help you to install latest Docker software:
+The following links contain instructions to install latest Docker software:
* `Docker Engine `_
* `Docker Compose `_
-Build the Mistral image manually
+Build the Mistral Image Manually
--------------------------------
-The `build.sh` script takes care of creating the `mistral-all` image locally.
-On the other hand you could execute the following command::
+Execute the following command from the repository top-level directory::
docker build -t mistral -f tools/docker/Dockerfile .
-The Mistral Docker image has a build parameter.
+The Mistral Docker image has one build parameter:
+-------------------------+-------------+--------------------------------------+
|Name |Default value| Description |
@@ -51,13 +49,15 @@ To launch Mistral in the multi node configuration::
-f tools/docker/docker-compose/mistral-multi-node.yaml \
-p mistral up -d
-The infrastructure docker-compose file contains a example of RabbitMQ,
-PostgreSQL and MySQL. Fill free to modify docker-compose files.
+The infrastructure docker-compose file contains examples of RabbitMQ,
+PostgreSQL and MySQL configurations. Feel free to modify the docker-compose
+files as needed.
-Also the docker-compose contains the Clould-flow container.
-It is available by `link `_
+The docker-compose Mistral configurations also include the CloudFlow container.
+It is available at `link `_
-If you want to rebuild image you should add `--build` option, for example::
+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 \
@@ -75,8 +75,8 @@ by default:
|`MESSAGE_BROKER_URL`|rabbit://guest:gu\|The message broker URL |
| |est@rabbitmq:5672 | |
+--------------------+------------------+----------------------+---------------+
-|`DATABASE_URL` |sqlite://mistral.\|The database URL |
-| |db | |
+|`DATABASE_URL` |sqlite:///mistral\|The database URL |
+| |.db | |
+--------------------+------------------+----------------------+---------------+
|`UPGRADE_DB` |false |If the `UPGRADE_DB` equals `true`, |
| | |a database upgrade will be launched |
@@ -94,8 +94,9 @@ by default:
| | |launched inside container |
+--------------------+------------------+----------------------+---------------+
-Other way you can mount the your config file to a Mistral Docker container.
-You should uncomment the volume sections in the docker-compose files.
+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
@@ -120,8 +121,7 @@ or PostgreSQL::
Using Mistral Client
--------------------
-The script also configures the containers so that the Mistral API will be
-accessible from the host machine on the default port 8989. So it is also
-possible to install the `mistral-pythonclient` to the host machine and
-execute commands there.
+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.
diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
index 8b5944303..f3e4370c2 100644
--- a/tools/docker/Dockerfile
+++ b/tools/docker/Dockerfile
@@ -31,7 +31,7 @@ ENV MISTRAL_DIR="/opt/stack/mistral" \
CONFIG_FILE="/etc/mistral/mistral.conf" \
INI_SET="crudini --set /etc/mistral/mistral.conf" \
MESSAGE_BROKER_URL="rabbit://guest:guest@rabbitmq:5672/" \
- DATABASE_URL="sqlite://mistral.db" \
+ DATABASE_URL="sqlite:///mistral.db" \
UPGRADE_DB="false" \
RUN_TESTS="false" \
DEBIAN_FRONTEND="noninteractive" \
@@ -60,4 +60,4 @@ RUN pip install -e "${MISTRAL_DIR}" && \
WORKDIR "${MISTRAL_DIR}"
EXPOSE 8989
-CMD "${MISTRAL_DIR}/tools/docker/start.sh"
\ No newline at end of file
+CMD "${MISTRAL_DIR}/tools/docker/start.sh"
diff --git a/tools/docker/start.sh b/tools/docker/start.sh
index f2980a2b2..d0b7652af 100755
--- a/tools/docker/start.sh
+++ b/tools/docker/start.sh
@@ -16,16 +16,21 @@ if [ ! -f ${CONFIG_FILE} ]; then
${INI_SET} DEFAULT debug "${LOG_DEBUG}"
fi
-if "${UPGRADE_DB}";
+if [ ${DATABASE_URL} == "sqlite:///mistral.db" -a ! -f ./mistral.db ]
then
- mistral-db-manage --config-file "${CONFIG_FILE}" upgrade head
+ python ./tools/sync_db.py --config-file "${CONFIG_FILE}"
mistral-db-manage --config-file "${CONFIG_FILE}" populate
fi
+if "${UPGRADE_DB}";
+then
+ /usr/local/bin/mistral-db-manage --config-file "${CONFIG_FILE}" upgrade head
+ mistral-db-manage --config-file "${CONFIG_FILE}" populate
+fi
if "${RUN_TESTS}";
then
cp "${CONFIG_FILE}" .mistral.conf
"${MISTRAL_DIR}/run_tests.sh" -N
else
mistral-server --config-file "${CONFIG_FILE}" --server ${MISTRAL_SERVER}
-fi
\ No newline at end of file
+fi