aboutsummaryrefslogtreecommitdiff
path: root/docs/dev/Docker.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/dev/Docker.md')
-rw-r--r--docs/dev/Docker.md97
1 files changed, 97 insertions, 0 deletions
diff --git a/docs/dev/Docker.md b/docs/dev/Docker.md
new file mode 100644
index 000000000..acfea484c
--- /dev/null
+++ b/docs/dev/Docker.md
@@ -0,0 +1,97 @@
+# How to build, publish and run a Apache Drill Docker image
+
+## Prerequisites
+
+ To build an Apache Drill docker image, you need to have the following software installed on your system to successfully complete a build.
+ * [Java 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
+ * [Maven 3.3.1 or greater](https://maven.apache.org/download.cgi)
+ * [Docker CE](https://store.docker.com/search?type=edition&offering=community)
+
+ If you are using an older Mac or PC, additionally configure [docker-machine](https://docs.docker.com/machine/overview/#what-is-docker-machine) on your system
+
+## Checkout
+```
+git clone https://github.com/apache/drill.git
+```
+## Build Drill
+```
+$ cd drill
+$ mvn clean install
+```
+## Build Docker Image
+```
+$ cd distribution
+$ mvn dockerfile:build -Pdocker
+```
+## Push Docker Image
+
+ By default, the docker image built above is configured to be pushed to [Drill Docker Hub](https://hub.docker.com/r/drill/apache-drill/) to create official Drill Docker images.
+```
+$ cd distribution
+$ mvn dockerfile:push -Pdocker
+```
+ You can configure the repository in pom.xml to point to any private or public container registry, or specify it in your mvn command.
+```
+$ cd distribution
+$ mvn dockerfile:push -Pdocker -Pdocker.repository=<my_repo>
+```
+## Run Docker Container
+
+ Running the Docker container should start Drill in embedded mode and connect to Sqlline.
+```
+$ docker run -i --name drill-1.14.0 -p 8047:8047 -t drill/apache-drill:1.14.0 /bin/bash
+Jun 29, 2018 3:28:21 AM org.glassfish.jersey.server.ApplicationHandler initialize
+INFO: Initiating Jersey application, version Jersey: 2.8 2014-04-29 01:25:26...
+apache drill 1.14.0
+"json ain't no thang"
+0: jdbc:drill:zk=local> select version from sys.version;
++------------+
+| version |
++------------+
+| 1.14.0 |
++------------+
+1 row selected (0.28 seconds)
+```
+
+ You can also run the container in detached mode and connect to sqlline using drill-localhost.
+```
+$ docker run -i --name drill-1.14.0 -p 8047:8047 --detach -t drill/apache-drill:1.14.0 /bin/bash
+<displays container ID>
+
+$ docker exec -it drill-1.14.0 bash
+<connects to container>
+
+$ /opt/drill/bin/drill-localhost
+apache drill 1.14.0
+"json ain't no thang"
+0: jdbc:drill:drillbit=localhost> select version from sys.version;
++------------+
+| version |
++------------+
+| 1.14.0 |
++------------+
+1 row selected (0.28 seconds)
+```
+
+## Querying Data
+
+ By default, you can only query files which are accessible within the container. For example, the sample data which ships with Drill.
+```
+> select first_name, last_name from cp.`employee.json` limit 1;
++-------------+------------+
+| first_name | last_name |
++-------------+------------+
+| Sheri | Nowmer |
++-------------+------------+
+1 row selected (0.256 seconds)
+```
+
+ To query files outside of the container, you can configure [docker volumes](https://docs.docker.com/storage/volumes/#start-a-service-with-volumes)
+
+## Drill Web UI
+
+ Drill web UI can be accessed using http://localhost:8047 once the Drill docker container is up and running. On Windows, you may need to specify the IP address of your system instead of 'localhost'.
+
+## More information
+
+ For more information including how to run Apache Drill in a Docker container, visit the [Apache Drill Documentation](http://drill.apache.org/docs/)