paul-rogers commented on a change in pull request #1348: DRILL-6346: Create an Official Drill Docker Container URL: https://github.com/apache/drill/pull/1348#discussion_r201904088
########## File path: distribution/Dockerfile ########## @@ -0,0 +1,35 @@ +# +# 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. +# + +FROM centos:7 + +# Project version defined in pom.xml is passed as an argument +ARG VERSION + +# JDK 8 is a pre-requisite to run Drill ; 'which' package is needed for drill-config.sh +RUN yum install -y java-1.8.0-openjdk-devel which ; yum clean all ; rm -rf /var/cache/yum + +# The drill tarball is generated upon building the Drill project +COPY target/apache-drill-$VERSION.tar.gz /tmp + +# Drill binaries are extracted into the '/opt/drill' directory +RUN mkdir /opt/drill +RUN tar -xvzf /tmp/apache-drill-$VERSION.tar.gz --directory=/opt/drill --strip-components 1 + +# Starts Drill in embedded mode and connects to Sqlline +ENTRYPOINT /opt/drill/bin/drill-embedded Review comment: Env vars are fine: both Docker and K8s support them. The trick here is that the set of such configs will be fixed and the code here will need to edit the values into the Drill config files, which makes it hard to add customer-specific config. Drill configs, in their full glory, are quite robust (with all the `drill-env.sh` and `drill-override.conf `options considered.) Far too much stuff to expose as env vars. Maybe have the "stock" Dockerfile handle the most obvious config settings (memory, ZK address, ...) and edit them into the files. (Luckily memory is already designed for this, so no work needed.) Then, advanced users can create their own Dockerfiles for the advanced cases, using the "stock" one as an example to get started. K8s config maps are just an easy way to pass whole files. Probably the same can be done in Docker by putting the files on a local disk, then mounting that directory into Docker. Hence, the idea of separating the site directory from the Drill distribution; the user can just mount their own site directory. (And, it can be from a config map in K8s.) ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
