From 507b9504e291682f14c515b55e44b9d2bf5e1f70 Mon Sep 17 00:00:00 2001 From: Xiangdong Huang Date: Sun, 18 Apr 2021 00:08:28 +0800 Subject: [PATCH] [IOTDB-1309]add dockerfile for 0.11.3 and 0.12.0 (#3023) --- client-py/release.sh | 3 ++ docker/ReadMe.md | 50 ++++++++++++++++++--- docker/src/main/Dockerfile-0.11.3 | 41 ++++++++++++++++++ docker/src/main/Dockerfile-0.12.0-cluster | 53 +++++++++++++++++++++++ docker/src/main/Dockerfile-0.12.0-node | 45 +++++++++++++++++++ 5 files changed, 187 insertions(+), 5 deletions(-) create mode 100644 docker/src/main/Dockerfile-0.11.3 create mode 100644 docker/src/main/Dockerfile-0.12.0-cluster create mode 100644 docker/src/main/Dockerfile-0.12.0-node diff --git a/client-py/release.sh b/client-py/release.sh index 94a56a6fb7..2d9ca29979 100755 --- a/client-py/release.sh +++ b/client-py/release.sh @@ -19,6 +19,9 @@ # under the License. # +# the python version must be python3. +python --version + rm -Rf build rm -Rf dist rm -Rf iotdb_session.egg_info diff --git a/docker/ReadMe.md b/docker/ReadMe.md index a416dd3a75..0eb3db323f 100644 --- a/docker/ReadMe.md +++ b/docker/ReadMe.md @@ -19,13 +19,27 @@ --> +# Docker image version definition + +Before v0.12, Apache IoTDB's docker image name and version format is: +`apache/iotdb:0..`. + +From 0.12 on, we release two images: one is for a single node, and the other is for the cluster mode. +The format is: `apache/iotdb:0..-node` and `apache/iotdb:0..-cluster`. + +## The definition of tag "latest" +Before v0.12, the "latest" tag will forward to the largest `apache/iotdb:0..`. + +From 0.12 on, the "latest" tag will forward to the largest `apache/iotdb:0..-node`. + + # How to build docker build -t THE_DOCKER_IMAGE_NAME:THE_VERSION -f THE_DOCKER_FILE_NAME e.g., -``` +```shell docker build -t my-iotdb: -f Dockerfile- ``` @@ -34,17 +48,35 @@ docker build -t my-iotdb: -f Dockerfile- Actually, we maintain a repo on dockerhub, so that you can get the docker image directly. For example, -``` + +```shell docker run -d -p 6667:6667 -p 31999:31999 -p 8181:8181 -p 5555:5555 apache/iotdb: ``` +```shell +docker run -d -p 6667:6667 -p 31999:31999 -p 8181:8181 -p 5555:5555 -p 9003:9003 -p 40010:40010 apache/iotdb: +``` + +## Port description + +By default, the ports that IoTDB uses are: + +* 6667: RPC port +* 31999: JMX port +* 8181: Monitor port +* 5555: Data sync port +* 9003: internal metadata rpc port (for cluster) +* 40010: internal data rpc port (for cluster) + + ## How to configure docker volumes The instructions below show how to store the output data and logs of IoTDB to two folders called iotdb_data and iotdb_logs respectively. `/D/docker/iotdb_data` and `/D/docker/iotdb_logs` can be changed to any local directory of your own host. -``` + +```shell docker run -it -v /D/docker/iotdb_data:/iotdb/data -v /D/docker/iotdb_logs:/iotdb/logs --name 123 apache/iotdb: ``` @@ -54,16 +86,24 @@ Suppose you have run an IoTDB Server in docker 1. Use `docker ps` to find out the CONTAINER ID e.g., -``` + +```shell $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c82321c70137 apache/iotdb: "/iotdb/sbin/start-s…" 12 minutes ago Up 12 minutes 0.0.0.0:6667->6667/tcp, 0.0.0.0:8181->8181/tcp, 5555/tcp, 0.0.0.0:31999->31999/tcp elegant_germain ``` 2. Use `docker exec` to attach the container: -``` + +```shell docker exec -it c82321c70137 /bin/bash ``` Then, for the latest version (or, >=0.10.x), run `start-cli.sh`, for version 0.9.x and 0.8.1, run `start-client.sh`. +Or, + +```shell +docker exec -it c82321c70137 start-cli.sh +``` + Enjoy it! diff --git a/docker/src/main/Dockerfile-0.11.3 b/docker/src/main/Dockerfile-0.11.3 new file mode 100644 index 0000000000..0de4faa60a --- /dev/null +++ b/docker/src/main/Dockerfile-0.11.3 @@ -0,0 +1,41 @@ +# +# 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 openjdk:11-jre-slim +RUN apt update \ + # procps is for `free` command + && apt install wget unzip lsof procps -y \ + && wget https://downloads.apache.org/iotdb/0.11.3/apache-iotdb-0.11.3-bin.zip \ + # if you are in China, use the following URL + #&& wget https://mirrors.tuna.tsinghua.edu.cn/apache/iotdb/0.11.3/apache-iotdb-0.11.3-bin.zip \ + && unzip apache-iotdb-0.11.3-bin.zip \ + && rm apache-iotdb-0.11.3-bin.zip \ + && mv apache-iotdb-0.11.3 /iotdb \ + && apt remove wget unzip -y \ + && apt autoremove -y \ + && apt purge --auto-remove -y \ + && apt clean -y +EXPOSE 6667 +EXPOSE 31999 +EXPOSE 5555 +EXPOSE 8181 +VOLUME /iotdb/data +VOLUME /iotdb/logs +ENV PATH="/iotdb/sbin/:/iotdb/tools/:${PATH}" +ENTRYPOINT ["/iotdb/sbin/start-server.sh"] diff --git a/docker/src/main/Dockerfile-0.12.0-cluster b/docker/src/main/Dockerfile-0.12.0-cluster new file mode 100644 index 0000000000..a201d6e3f4 --- /dev/null +++ b/docker/src/main/Dockerfile-0.12.0-cluster @@ -0,0 +1,53 @@ +# +# 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 openjdk:11-jre-slim +RUN apt update \ + # procps is for `free` command + && apt install wget unzip lsof procps -y \ + && wget https://downloads.apache.org/iotdb/0.12.0/apache-iotdb-0.12.0-cluster-bin.zip \ + # if you are in China, use the following URL + #&& wget https://mirrors.tuna.tsinghua.edu.cn/apache/iotdb/0.12.0/apache-iotdb-0.12.0-cluster-bin.zip \ + && unzip apache-iotdb-0.12.0-cluster-bin.zip \ + && rm apache-iotdb-0.12.0-cluster-bin.zip \ + && mv apache-iotdb-0.12.0-cluster-bin /iotdb \ + && apt remove wget unzip -y \ + && apt autoremove -y \ + && apt purge --auto-remove -y \ + && apt clean -y \ + # modify the seeds in configuration file + && sed -i '/^seed_nodes/cseed_nodes=127.0.0.1:9003' /iotdb/conf/iotdb-cluster.properties \ + && sed -i '/^default_replica_num/cdefault_replica_num=1' /iotdb/conf/iotdb-cluster.properties + +# rpc port +EXPOSE 6667 +# JMX port +EXPOSE 31999 +# sync port +EXPOSE 5555 +# monitor port +EXPOSE 8181 +# internal meta port +EXPOSE 9003 +# internal data port +EXPOSE 40010 +VOLUME /iotdb/data +VOLUME /iotdb/logs +ENV PATH="/iotdb/sbin/:/iotdb/tools/:${PATH}" +ENTRYPOINT ["/iotdb/sbin/start-node.sh"] diff --git a/docker/src/main/Dockerfile-0.12.0-node b/docker/src/main/Dockerfile-0.12.0-node new file mode 100644 index 0000000000..7706f635cf --- /dev/null +++ b/docker/src/main/Dockerfile-0.12.0-node @@ -0,0 +1,45 @@ +# +# 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 openjdk:11-jre-slim +RUN apt update \ + # procps is for `free` command + && apt install wget unzip lsof procps -y \ + && wget https://downloads.apache.org/iotdb/0.12.0/apache-iotdb-0.12.0-server-bin.zip \ + # if you are in China, use the following URL + #&& wget https://mirrors.tuna.tsinghua.edu.cn/apache/iotdb/0.12.0/apache-iotdb-0.12.0-server-bin.zip \ + && unzip apache-iotdb-0.12.0-server-bin.zip \ + && rm apache-iotdb-0.12.0-server-bin.zip \ + && mv apache-iotdb-0.12.0-server-bin /iotdb \ + && apt remove wget unzip -y \ + && apt autoremove -y \ + && apt purge --auto-remove -y \ + && apt clean -y +# rpc port +EXPOSE 6667 +# JMX port +EXPOSE 31999 +# sync port +EXPOSE 5555 +# monitor port +EXPOSE 8181 +VOLUME /iotdb/data +VOLUME /iotdb/logs +ENV PATH="/iotdb/sbin/:/iotdb/tools/:${PATH}" +ENTRYPOINT ["/iotdb/sbin/start-server.sh"] -- GitLab