| --- |
| title: Installing Apache PredictionIO® with Docker |
| --- |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| ## Download and Start Docker |
| |
| Docker is a widely used container solution. Please download and start Docker by following their [guide](https://www.docker.com/get-started). |
| |
| ## Get PredictionIO and Dependencies Configuration |
| |
| Starting from v0.13.0, Apache PredictionIO® starts to provide docker support for the production environment. `Dockerfile` and dependencies configuration can be found in the `docker` folder in the [git repository](https://github.com/apache/predictionio/tree/develop/docker). |
| |
| ```bash |
| git clone https://github.com/apache/predictionio.git |
| cd predictionio/docker |
| ``` |
| |
| INFO: In this installation, we only need the `docker` sub-directory in the repository. One can use other tools to get the folder without cloning the whole project. |
| |
| ## Build Docker Image |
| |
| To build PredictionIO docker image, `Dockerfile` is provided in sub-directory `pio`. |
| |
| ``` |
| docker build -t predictionio/pio pio |
| ``` |
| |
| One will be able to build an image with tag `prediction/pio:latest` using the above command. |
| |
| WARNING: People can get PredictionIO image from Dockerhub through `docker pull predictionio/pio`. However, since the image cannot run without a properly configured storage, please follow the following steps to complete the installation. |
| |
| WARNING: Image `prediction/pio` hosted on Dockerhub is **NOT** regarded as an official ASF release and might provide a different PredictionIO version from your desired PredictionIO version. It is recommended to build the image locally other than pulling directly from Dockerhub. |
| |
| ## Pull Images and Start |
| |
| In this repository, PostgreSQL, MySQL, ElasticSearch, and local file system are supported with their corresponding configuration. |
| |
| ### Supported storages are as below: |
| |
| Event Storage |
| |
| - PostgreSQL, MySQL, Elasticsearch |
| |
| Metadata Storage |
| |
| - PostgreSQL, MySQL, Elasticsearch |
| |
| Model Storage |
| |
| - PostgreSQL, MySQL, LocalFS |
| |
| One can use `docker-compose -f` to pull and start the corresponding services. More details are provided in [this document](https://github.com/apache/predictionio/blob/develop/docker/README.md#run-predictionio-with-selectable-docker-compose-files). |
| |
| ### Service Starting Sample |
| |
| ``` |
| docker-compose -f docker-compose.yml \ |
| -f pgsql/docker-compose.base.yml \ |
| -f pgsql/docker-compose.meta.yml \ |
| -f pgsql/docker-compose.event.yml \ |
| -f pgsql/docker-compose.model.yml \ |
| up |
| ``` |
| |
| In this examples, we pull and start `predictionio/pio` image with `docker-compose.yml`. |
| |
| And pull `postgres:9` image with `pgsql/docker-compose.base.yml`. |
| |
| And config PostgreSQL to store our metadata, event, and model with `pgsql/docker-compose.meta.yml`, `pgsql/docker-compose.event.yml`, and `pgsql/docker-compose.model.yml`. |
| |
| After pulling the images, the script will start PostgreSQL, Apache PredictionIO, and Apache Spark. The event server should be ready at port `7070`, and one should see these logs in the command line interface. |
| |
| ``` |
| ... |
| pio_1 | [INFO] [Management$] Your system is all ready to go. |
| pio_1 | [INFO] [Management$] Creating Event Server at 0.0.0.0:7070 |
| pio_1 | [INFO] [HttpListener] Bound to /0.0.0.0:7070 |
| pio_1 | [INFO] [EventServerActor] Bound received. EventServer is ready. |
| ``` |
| |
| ## Verifying Service |
| |
| A command tool `pio-docker` is provided to invoke `pio` command in the PredictionIO container. Set `pio-docker` to default execution path and use `status` to check the current PredictionIO service with the following script. |
| |
| ```bash |
| $ export PATH=`pwd`/bin:$PATH |
| $ pio-docker status |
| ``` |
| |
| One should be able to see the corresponding log in the following structure, and your system is ready to go! |
| |
| ``` |
| [INFO] [Management$] Inspecting PredictionIO... |
| [INFO] [Management$] PredictionIO 0.13.0 is installed at /usr/share/predictionio |
| [INFO] [Management$] Inspecting Apache Spark... |
| [INFO] [Management$] Apache Spark is installed at /usr/share/spark-2.2.2-bin-hadoop2.7 |
| [INFO] [Management$] Apache Spark 2.2.2 detected (meets minimum requirement of 1.3.0) |
| [INFO] [Management$] Inspecting storage backend connections... |
| [INFO] [Storage$] Verifying Meta Data Backend (Source: PGSQL)... |
| [INFO] [Storage$] Verifying Model Data Backend (Source: PGSQL)... |
| [INFO] [Storage$] Verifying Event Data Backend (Source: PGSQL)... |
| [INFO] [Storage$] Test writing to Event Store (App Id 0)... |
| [INFO] [Management$] Your system is all ready to go. |
| ``` |
| |
| INFO: After the service is up, one can continue by changing `pio` to `pio-docker` for further deployment. More details are provided in [this document](https://github.com/apache/predictionio/tree/develop/docker#tutorial). |
| |
| ## Community Docker Support |
| |
| [More PredictionIO Docker packages supported by our great community](/community/projects.html#docker-images). |