You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by eo...@apache.org on 2019/09/11 07:09:03 UTC
[zookeeper] branch branch-3.5.6 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.
eolivelli pushed a commit to branch branch-3.5.6
in repository https://gitbox.apache.org/repos/asf/zookeeper.git
The following commit(s) were added to refs/heads/branch-3.5.6 by this push:
new 22c0779 ZOOKEEPER-3532: Provide a docker-based environment to work on a known OS
22c0779 is described below
commit 22c077917b3ee7faf7fba9c8a072a88c03ba8c88
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
+