diff --git a/docker_prod.sh b/docker_prod.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f60aa2f759c7e2be4ebd7824c04cdb9e5c403ccb
--- /dev/null
+++ b/docker_prod.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+set -e
+
+usage() {
+  echo -e "usage:\t$0 DIRECTORY, e.g. $0 pica-mattermost"
+  echo -e "\tDIRECTORY : name of the directory containing docker-compose.yml\n"
+  echo "This script is a helper to launch a service : it will create all needed volumes for the service,"
+  echo "pull the specified version of the image if any, and then launch docker-compose up -d."
+  exit 1
+}
+
+if [[ $# -ne 1 ]]; then
+  echo "ERROR : wrong number of arguments"
+  usage
+fi
+
+if [[ ! -d "$1" ]]; then
+  echo "ERROR : directory does not exist ($1)"
+  usage
+fi
+
+# Go to the folder of the service which will be tested
+cd "$1"
+
+echo -e "Starting procedure for \033[31m$1\e[0m..."
+
+echo -e "\n==== Pull Dockerfiles repository ===="
+echo -e "Using branch \033[31m $(git rev-parse --abbrev-ref HEAD)\e[0m, is this correct ? [y/N]"
+read ans
+
+if [ $ans == "y" ]; then
+  git pull
+else
+  echo "Aborting."
+  exit 0
+fi
+
+echo -e "\n==== Pull new versions of images ===="
+docker-compose pull
+
+echo -e "\n==== Ensure named external volumes are created ===="
+for v in $(docker-compose config --volumes); do
+  docker volume create "$v"
+done
+
+echo -e "\n==== Lauch $1 ===="
+docker-compose up -d
+
+echo -e "\n==== Print logs (use Ctrl+C to stop) ===="
+docker-compose logs -f