You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ha...@apache.org on 2019/09/09 22:33:20 UTC

[zookeeper] branch master updated: ZOOKEEPER-3532: Provide a docker-based environment to work on a known OS

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

hanm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zookeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new a0f500b  ZOOKEEPER-3532: Provide a docker-based environment to work on a known OS
a0f500b is described below

commit a0f500bdaa04e68d60ca891b0b1f8062196df18c
Author: Enrico Olivelli <en...@diennea.com>
AuthorDate: Mon Sep 9 15:33:07 2019 -0700

    ZOOKEEPER-3532: Provide a docker-based environment to work on a known OS
    
    Just run dev/docker/run.sh and you will have a Linux environment with all that is needed to build ZooKeeper, even on MacOs.
    
    The original idea patch was from Sijie Guo (sijie), Apache BookKeeper project.
    
    The script creates a local image that accesses the local filesystem with the current user (UID), this way the container can work on local files without problems of ownership of files.
    
    Author: Enrico Olivelli <en...@diennea.com>
    
    Reviewers: maoling <ma...@sina.com>, Michael Han <ha...@apache.org>
    
    Closes #1075 from eolivelli/fix/docker-env
---
 dev/docker/Dockerfile | 23 ++++++++++++++++
 dev/docker/run.sh     | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 95 insertions(+)

diff --git a/dev/docker/Dockerfile b/dev/docker/Dockerfile
new file mode 100644
index 0000000..0feb31b
--- /dev/null
+++ b/dev/docker/Dockerfile
@@ -0,0 +1,23 @@
+#
+# 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 maven:3.6.1-jdk-11
+
+RUN apt-get update
+RUN apt-get install -y g++ cmake autoconf libcppunit-dev libtool
diff --git a/dev/docker/run.sh b/dev/docker/run.sh
new file mode 100755
index 0000000..9011310
--- /dev/null
+++ b/dev/docker/run.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+# 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.
+
+set -e -x -u
+
+SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+
+export IMAGE_NAME="zookeeper/dev"
+
+pushd ${SCRIPT_DIR}
+
+docker build --rm=true -t ${IMAGE_NAME} .
+
+popd
+
+if [ "$(uname -s)" == "Linux" ]; then
+  USER_NAME=${SUDO_USER:=$USER}
+  USER_ID=$(id -u "${USER_NAME}")
+  GROUP_ID=$(id -g "${USER_NAME}")
+  LOCAL_HOME=$(realpath ~)
+else # boot2docker uid and gid
+  USER_NAME=$USER
+  USER_ID=1000
+  GROUP_ID=50
+  LOCAL_HOME="/Users/${USER_NAME}"
+fi
+
+docker build -t "${IMAGE_NAME}-${USER_NAME}" - <<UserSpecificDocker
+FROM ${IMAGE_NAME}
+RUN groupadd --non-unique -g ${GROUP_ID} ${USER_NAME} && \
+  useradd -g ${GROUP_ID} -u ${USER_ID} -k /root -m ${USER_NAME}
+ENV  HOME /home/${USER_NAME}
+UserSpecificDocker
+
+ZOOKEEPER_ROOT=${SCRIPT_DIR}/../..
+
+CMD="
+echo
+echo 'Welcome to Apache ZooKeeper Development Env'
+echo 'To build, execute'
+echo '  mvn clean install'
+echo
+bash
+"
+
+pushd ${ZOOKEEPER_ROOT}
+
+docker run -i -t \
+  --rm=true \
+  -w ${ZOOKEEPER_ROOT} \
+  -u "${USER}" \
+  -v "$(realpath $ZOOKEEPER_ROOT):${ZOOKEEPER_ROOT}" \
+  -v "${LOCAL_HOME}:/home/${USER_NAME}" \
+  ${IMAGE_NAME}-${USER_NAME} \
+  bash -c "${CMD}"
+
+popd
+