This is an automated email from the ASF dual-hosted git repository.

xvrl pushed a commit to branch docker-cleanup
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git

commit 88a5975eed47605747e92dbd57aa86c51e28e576
Author: Xavier Léauté <[email protected]>
AuthorDate: Mon Aug 12 21:09:42 2019 -0700

    docker build cleanup and speed improvements
    
    * switch builder image to smaller "slim" debian base
    * use built-in pyyaml
    * skip various build checks to speed up compilation
    * create user/group in target image directly
---
 distribution/docker/Dockerfile         | 45 +++++++++++++++++++---------------
 distribution/docker/Dockerfile.mysql   | 20 +++++++++------
 distribution/docker/README.md          | 18 +++++---------
 distribution/docker/docker-compose.yml | 12 ++++-----
 distribution/docker/sha256sums.txt     | 19 --------------
 5 files changed, 50 insertions(+), 64 deletions(-)

diff --git a/distribution/docker/Dockerfile b/distribution/docker/Dockerfile
index 15e8ad7..3ed4c21 100644
--- a/distribution/docker/Dockerfile
+++ b/distribution/docker/Dockerfile
@@ -17,26 +17,31 @@
 # under the License.
 #
 
-FROM maven:3-jdk-8 as builder
+FROM maven:3-jdk-8-slim as builder
 
-RUN apt-get update && apt-get install --no-install-recommends -y python3-pip 
python3-setuptools python3-wheel\
-  && rm -rf /var/lib/apt/lists/*
-RUN pip3 install --no-cache-dir pyyaml
+RUN export DEBIAN_FRONTEND=noninteractive \
+    && apt-get -qq update \
+    && apt-get -qq -y install --no-install-recommends python3 python3-yaml
 
 COPY . /src
 WORKDIR /src
-RUN mvn dependency:go-offline install -ff -q -B -DskipTests 
-Dforbiddenapis.skip=true -Pdist -Pbundle-contrib-exts
+RUN mvn -B -ff -q dependency:go-offline \
+      install \
+      -Pdist,bundle-contrib-exts \
+      -DskipTests \
+      -Danimal.sniffer.skip=true \
+      -Dcheckstyle.skip=true \
+      -Denforcer.skip=true \
+      -Dforbiddenapis.skip=true \
+      -Dmaven.javadoc.skip=true \
+      -Dpmd.skip=true \
+      -Dspotbugs.skip=true
 
-RUN \
- VER=$(mvn -B org.apache.maven.plugins:maven-help-plugin:3.1.1:evaluate 
-Dexpression=project.version -q -DforceStdout=true -f pom.xml 2>/dev/null) \
- && tar -zxf ./distribution/target/apache-druid-${VER}-bin.tar.gz -C /opt \
- && ln -s /opt/apache-druid-${VER} /opt/druid
-
-RUN addgroup --gid 1000 druid \
- && adduser --home /opt/druid --shell /bin/sh --no-create-home --uid 1000 
--gecos '' --gid 1000 --disabled-password druid \
- && mkdir -p /opt/druid/var \
- && chown -R druid:druid /opt/druid \
- && chmod 775 /opt/druid/var
+RUN VERSION=$(mvn -B -q 
org.apache.maven.plugins:maven-help-plugin:3.1.1:evaluate \
+      -Dexpression=project.version -DforceStdout=true
+    ) \
+ && tar -zxf ./distribution/target/apache-druid-${VERSION}-bin.tar.gz -C /opt \
+ && ln -s /opt/apache-druid-${VERSION} /opt/druid
 
 FROM amd64/busybox:1.30.0-glibc as busybox
 
@@ -46,13 +51,13 @@ LABEL maintainer="Apache Druid Developers 
<[email protected]>"
 COPY --from=busybox /bin/busybox /busybox/busybox
 RUN ["/busybox/busybox", "--install", "/bin"]
 
-COPY --from=extractor /opt /opt
-COPY ./docker/druid.sh /druid.sh
+COPY --from=builder /opt /opt
+COPY distribution/docker/druid.sh /druid.sh
 
-RUN addgroup --gid 1000 druid \
- && adduser -h /opt/druid -s /bin/sh -H -u 1000 -g '' -G druid -D druid \
+RUN addgroup -S -g 1000 druid \
+ && adduser -S -u 1000 -D -H -h /opt/druid -s /bin/sh -g '' -G druid druid \
  && mkdir -p /opt/druid/var \
- && chown -R druid:druid /opt/ \
+ && chown -R druid:druid /opt \
  && chmod 775 /opt/druid/var
 
 USER druid
diff --git a/distribution/docker/Dockerfile.mysql 
b/distribution/docker/Dockerfile.mysql
index 5664dc8..bba0721 100644
--- a/distribution/docker/Dockerfile.mysql
+++ b/distribution/docker/Dockerfile.mysql
@@ -17,12 +17,18 @@
 # under the License.
 #
 
-ARG DRUID_RELEASE=druid/druid:0.14.0
+ARG DRUID_RELEASE
 FROM $DRUID_RELEASE
 
-COPY sha256sums.txt /tmp
-RUN wget -O 
/opt/druid/extensions/mysql-metadata-storage/mysql-connector-java-5.1.38.jar 
https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
 \
- && sed -e '/^#/d' /tmp/sha256sums.txt > /tmp/sha256sums-stripped.txt \
- && sha256sum -c /tmp/sha256sums-stripped.txt \
- && rm -f /opt/druid/lib/mysql-connector-java-5.1.38.jar \
- && ln -s 
/opt/druid/extensions/mysql-metadata-storage/mysql-connector-java-5.1.38.jar 
/opt/druid/lib
+WORKDIR /opt/druid/extensions/mysql-metadata-storage
+
+ARG 
MYSQL_URL=https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
+ARG MYSQL_JAR=mysql-connector-java-5.1.38.jar
+# 
https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar.sha1
+ARG MYSQL_SHA=dbbd7cd309ce167ec8367de4e41c63c2c8593cc5
+
+RUN wget -q ${MYSQL_URL} \
+ && echo "${MYSQL_SHA}  ${MYSQL_JAR}" | sha1sum -c \
+ && ln -s ../extensions/mysql-metadata-storage/${MYSQL_JAR} /opt/druid/lib
+
+WORKDIR /opt/druid
diff --git a/distribution/docker/README.md b/distribution/docker/README.md
index 64f51d6..09a1e7c 100644
--- a/distribution/docker/README.md
+++ b/distribution/docker/README.md
@@ -19,7 +19,7 @@
 
 ## Build
 
-From the root of the repo, run `docker build -t druid:tag -f 
distribution/docker/Dockerfile .`
+From the root of the repo, run `docker build -t apache/incubator-druid:tag -f 
distribution/docker/Dockerfile .`
 
 ## Run
 
@@ -27,16 +27,10 @@ Edit `environment` to suite. Run `docker-compose -f 
distribution/docker/docker-c
 
 ## MySQL Database Connector
 
-This image contains solely the postgres metadata database connector. If you 
need
-the mysql metadata storage connector, consider adding these lines before the 
`addgroup`
-run-command.
+This image contains solely the postgres metadata storage connector. If you
+need the mysql metadata storage connector, you can use Dockerfile.mysql to add
+it to the base image above.
 
-```
-RUN wget -O 
/opt/druid/extensions/mysql-metadata-storage/mysql-connector-java-5.1.38.jar 
http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
 \
- && sha256sum --ignore-missing -c /src/distribution/docker/sha256sums.txt \
- && ln -s 
/opt/druid/extensions/mysql-metadata-storage/mysql-connector-java-5.1.38.jar 
/opt/druid/lib
-```
+`docker build -t apache/incubator-druid:tag-mysql --build-arg 
DRUID_RELEASE=apache/incubator-druid:tag -f 
distribution/docker/Dockerfile.mysql .`
 
-Alternatively, `cd src/distribution/docker; docker build -t druid:mysql 
--build-arg DRUID_RELEASE=upstream -f Dockerfile.mysql .`
-
-where `upstream` is the version to use as the base (e.g. druid:0.14.0 from 
Dockerhub)
+where `druid:tag` is the version to use as the base.
diff --git a/distribution/docker/docker-compose.yml 
b/distribution/docker/docker-compose.yml
index 891d383..7160dcd 100644
--- a/distribution/docker/docker-compose.yml
+++ b/distribution/docker/docker-compose.yml
@@ -46,7 +46,7 @@ services:
       - ZOO_MY_ID=1
 
   coordinator:
-    image: druid
+    image: apache/incubator-druid
     container_name: coordinator
     volumes:
       - coordinator_var:/opt/druid/var
@@ -61,7 +61,7 @@ services:
       - environment
 
   broker:
-    image: druid
+    image: apache/incubator-druid
     container_name: broker
     volumes:
       - broker_var:/opt/druid/var
@@ -77,7 +77,7 @@ services:
       - environment
 
   historical:
-    image: druid
+    image: apache/incubator-druid
     container_name: historical
     volumes:
       - historical_var:/opt/druid/var
@@ -93,7 +93,7 @@ services:
       - environment
 
   overlord:
-    image: druid
+    image: apache/incubator-druid
     container_name: overlord
     volumes:
       - overlord_var:/opt/druid/var
@@ -108,7 +108,7 @@ services:
       - environment
 
   middlemanager:
-    image: druid
+    image: apache/incubator-druid
     container_name: middlemanager
     volumes:
       - middle_var:/opt/druid/var
@@ -124,7 +124,7 @@ services:
       - environment
 
   router:
-    image: druid
+    image: apache/incubator-druid
     container_name: router
     volumes:
       - router_var:/opt/druid/var
diff --git a/distribution/docker/sha256sums.txt 
b/distribution/docker/sha256sums.txt
deleted file mode 100644
index 6f858cd..0000000
--- a/distribution/docker/sha256sums.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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.
-#
-b95bf9fe25cb5428f378a62fc842e177ca004b4ae1f9054968b2a396dcc1ec22  
/opt/druid/extensions/mysql-metadata-storage/mysql-connector-java-5.1.38.jar


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to