You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by as...@apache.org on 2019/06/27 11:53:19 UTC

[servicecomb-kie] 08/29: add docker compose deployment build script for release a binary default port is 30110 upgrade go-archaius

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

asifdxtreme pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-kie.git

commit 849ec5edca0cbc4bcab06d0301f9901fcc54dfc9
Author: tian <xi...@gmail.com>
AuthorDate: Tue May 14 15:33:35 2019 +0800

    add docker compose deployment
    build script for release a binary
    default port is 30110
    upgrade go-archaius
---
 .gitignore                             |  1 +
 README.md                              | 29 ++++++++++--
 build/build_server.sh                  | 80 ++++++++++++++++++++++++++++++++++
 build/docker/server/Dockerfile         | 26 +++++++++++
 deployments/docker/db.js               | 29 ++++++++++++
 deployments/docker/docker-compose.yaml | 17 ++++++--
 examples/dev/REAMDME.md                | 23 ++++++----
 examples/dev/conf/chassis.yaml         |  2 +-
 go.mod                                 |  2 +-
 scripts/start.sh                       | 58 ++++++++++++++++++++++++
 10 files changed, 251 insertions(+), 16 deletions(-)

diff --git a/.gitignore b/.gitignore
index fcf40a7..8d99bb8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ vendor/**
 !vendor/manifest
 
 **/conf/servicecomb-kie/
+release
 !etc/conf/
 etc/data/
 etc/ssl/
diff --git a/README.md b/README.md
index c427b6a..21b98ae 100644
--- a/README.md
+++ b/README.md
@@ -36,11 +36,12 @@ based on template language
 - frontend: web console for kie
 
 ## Features
-
-TODO
 - simple key name with rich labels: user can define labels for a key, 
 that distinguish from key to another key.  
-a key will not be stringed by fixed schema. 
+
+TODO
+
+- a key will not be stringed by fixed schema. 
 labels for a key is like "env=test, service=cart, version=1.0" or "cluster=xxx"  
 or "env=test, service=cart, version=1.0, ip=x.x.x.x"
 - validator: value can be checked by user defined python script, 
@@ -63,10 +64,32 @@ to a distributed system in separated views.
 - kv change history: all kv changes is recorded and can be easily roll back by UI
 ## Quick Start
 
+### Run locally with Docker compose
+
+```bash
+git clone git@github.com:apache/servicecomb-kie.git
+cd servicecomb-kie/deployments/docker
+sudo docker-compose up
+```
+it will launch 3 components 
+- mongodb: 127.0.0.1:27017
+- mongodb UI:http://127.0.0.1:8081
+- servicecomb-kie: http://127.0.0.1:30110
+
 
 ## Development
 To see how to build a local dev environment, check [here](examples/dev)
 
+### Build
+```bash
+cd build
+export VERSION=0.0.1
+./build_server.sh
+```
+
+this will generate a "servicecomb-kie-0.0.1-linux-amd64.tar" in "release" folder,
+and a docker image "servicecomb/kie:0.0.1"
+
 ## Contact
 
 Bugs: [issues](https://issues.apache.org/jira/browse/SCB)
diff --git a/build/build_server.sh b/build/build_server.sh
new file mode 100755
index 0000000..63693a7
--- /dev/null
+++ b/build/build_server.sh
@@ -0,0 +1,80 @@
+#!/usr/bin/env bash
+export BUILD_DIR=$(cd "$(dirname "$0")"; pwd)
+export PROJECT_DIR=$(dirname ${BUILD_DIR})
+echo "downloading dependencies"
+cd ${PROJECT_DIR}
+GO111MODULE=on go mod vendor
+version="latest"
+release_dir=${PROJECT_DIR}/release/kie
+
+if [ -z "${VERSION}" ]; then
+ echo "missing VERSION env, use ${version} as release version"
+else
+ version=${VERSION}
+fi
+
+
+
+if [ -d ${release_dir} ]; then
+    rm -rf ${release_dir}
+fi
+
+mkdir -p ${release_dir}/conf
+pkg_name="servicecomb-kie-$version-linux-amd64.tar.gz"
+
+export GIT_COMMIT=`git rev-parse HEAD | cut -b 1-7`
+echo "build from ${GIT_COMMIT}"
+
+
+echo "building..."
+go build -o ${release_dir}/kie github.com/apache/servicecomb-kie/cmd/kie
+
+
+writeConfig(){
+echo "write template config..."
+cat <<EOM > ${release_dir}/conf/chassis.yaml
+cse:
+  service:
+    registry:
+      disabled: true
+      address: http://127.0.0.1:30100
+  protocols:
+    rest:
+      listenAddress: 127.0.0.1:30108
+    rest-consul: #consul compatible API
+      listenAddress: 127.0.0.1:8500
+  handler:
+    chain:
+      Provider:
+        default: auth-handler,ratelimiter-provider
+EOM
+
+cat <<EOM > ${release_dir}/conf/microservice.yaml
+service_description:
+  name: servicecomb-kie
+  version: ${version}
+EOM
+
+cat <<EOM > ${release_dir}/conf/kie-conf.yaml
+db:
+  uri: mongodb://admin:123@127.0.0.1:27017/kie
+  type: mongodb
+  poolSize: 10
+  ssl: false
+  sslCA:
+  sslCert:
+EOM
+}
+
+writeConfig
+
+echo "packaging tar.gz..."
+cd ${release_dir}
+tar zcf ${pkg_name} conf kie
+
+
+
+echo "building docker..."
+cp ${PROJECT_DIR}/scripts/start.sh ./
+
+sudo docker build -t servicecomb/kie:${version} -f ${PROJECT_DIR}/build/docker/server/Dockerfile .
\ No newline at end of file
diff --git a/build/docker/server/Dockerfile b/build/docker/server/Dockerfile
new file mode 100644
index 0000000..2eb34d0
--- /dev/null
+++ b/build/docker/server/Dockerfile
@@ -0,0 +1,26 @@
+# 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 ubuntu:19.04
+
+RUN apt-get update && apt-get install -y net-tools
+RUN mkdir -p /etc/servicecomb-kie/
+RUN mkdir -p /opt/servicecomb-kie/conf
+RUN export GO_CHASSIS=/opt/servicecomb-kie
+
+ADD ./kie /opt/servicecomb-kie/
+ADD ./start.sh /opt/servicecomb-kie/
+ADD ./conf/microservice.yaml /opt/servicecomb-kie/conf/
+ENTRYPOINT ["/opt/servicecomb-kie/start.sh"]
\ No newline at end of file
diff --git a/deployments/docker/db.js b/deployments/docker/db.js
new file mode 100644
index 0000000..2f1ff7a
--- /dev/null
+++ b/deployments/docker/db.js
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+db.createUser(
+    {
+        user: "kie",
+        pwd: "123",
+        roles:[
+            {
+                role: "readWrite",
+                db:   "kie"
+            }
+        ]
+    }
+);
\ No newline at end of file
diff --git a/deployments/docker/docker-compose.yaml b/deployments/docker/docker-compose.yaml
index 700fa28..4bcbca0 100644
--- a/deployments/docker/docker-compose.yaml
+++ b/deployments/docker/docker-compose.yaml
@@ -17,14 +17,16 @@
 version: '3.1'
 services:
   mongo:
-    image: mongo
+    image: mongo:3.4
     restart: always
     ports:
       - 27017:27017
     environment:
+      MONGO_INITDB_DATABASE: kie
       MONGO_INITDB_ROOT_USERNAME: kie
       MONGO_INITDB_ROOT_PASSWORD: 123
-
+    volumes:
+      - ./db.js:/docker-entrypoint-initdb.d/db.js:ro
   mongo-express:
     image: mongo-express
     restart: always
@@ -32,4 +34,13 @@ services:
       - 8081:8081
     environment:
       ME_CONFIG_MONGODB_ADMINUSERNAME: kie
-      ME_CONFIG_MONGODB_ADMINPASSWORD: 123
\ No newline at end of file
+      ME_CONFIG_MONGODB_ADMINPASSWORD: 123
+  servicecomb-kie:
+    image: servicecomb/kie:latest
+    restart: always
+    ports:
+      - 30110:30110
+    environment:
+      MONGODB_USER: kie
+      MONGODB_PWD: 123
+      MONGODB_ADDR: mongo
\ No newline at end of file
diff --git a/examples/dev/REAMDME.md b/examples/dev/REAMDME.md
index 5b770d1..9f85df0 100644
--- a/examples/dev/REAMDME.md
+++ b/examples/dev/REAMDME.md
@@ -1,10 +1,11 @@
 # Intro
-that is a simple example to run kie in you local machine
+this guide will show you how to develop servicecomb-kie in your local machine. 
 
-you only need to set up a mongodb and config credential 
-and related info in kie-conf.yaml
+servicecomb-kie only depend on mongodb, so you have 2 choices
+- setup a mongodb and give credential in kie-conf.yaml
+- setup a simple mongodb alone with admin UI by docker compose 
 
-you can setup a simple mongodb alone with admin UI by docker compose 
+in this guide, we will use mongodb launched by docker compose
 
 # Get started
 
@@ -20,8 +21,14 @@ sudo docker-compose up
 ./kie --config kie-conf.yaml
 ```
 
-3. check service API document
-```bash
-cd examples/dev/conf/servicecomb-kie/schema
-```
+# mongodb admin UI
+http://127.0.0.1:8081/
+
+#servicecomb-kie endpoint
+http://127.0.0.1:30110/
+
+# API document
+the API doc will be generated under 
+examples/dev/conf/servicecomb-kie/schema
+
 you can copy it to https://editor.swagger.io/ to see full API document
diff --git a/examples/dev/conf/chassis.yaml b/examples/dev/conf/chassis.yaml
index d3d4c4b..c98a93b 100755
--- a/examples/dev/conf/chassis.yaml
+++ b/examples/dev/conf/chassis.yaml
@@ -6,7 +6,7 @@ cse:
       address: http://127.0.0.1:30100
   protocols:
     rest:
-      listenAddress: 127.0.0.1:30108
+      listenAddress: 127.0.0.1:30110
     rest-consul: #consul compatible API
       listenAddress: 127.0.0.1:8500
   handler:
diff --git a/go.mod b/go.mod
index 368d3a8..2161b5c 100644
--- a/go.mod
+++ b/go.mod
@@ -2,7 +2,7 @@ module github.com/apache/servicecomb-kie
 
 require (
 	github.com/emicklei/go-restful v2.8.0+incompatible
-	github.com/go-chassis/go-archaius v0.14.0
+	github.com/go-chassis/go-archaius v0.16.0
 	github.com/go-chassis/go-chassis v1.4.0
 	github.com/go-chassis/paas-lager v1.0.2-0.20190328010332-cf506050ddb2
 	github.com/go-mesh/openlogging v1.0.1-0.20181205082104-3d418c478b2d
diff --git a/scripts/start.sh b/scripts/start.sh
new file mode 100755
index 0000000..35e62ea
--- /dev/null
+++ b/scripts/start.sh
@@ -0,0 +1,58 @@
+#!/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.
+
+
+
+root_dir=/opt/servicecomb-kie
+net_name=$(ip -o -4 route show to default | awk '{print $5}')
+listen_addr=$(ifconfig ${net_name} | grep -E 'inet\W' | grep -o -E [0-9]+.[0-9]+.[0-9]+.[0-9]+ | head -n 1)
+
+
+writeConfig(){
+echo "write template config..."
+cat <<EOM > ${root_dir}/conf/chassis.yaml
+cse:
+  service:
+    registry:
+      disabled: true
+  protocols:
+    rest:
+      listenAddress: ${listen_addr}:30110
+    rest-consul: #consul compatible API
+      listenAddress: ${listen_addr}:8500
+  handler:
+    chain:
+      Provider:
+        default: auth-handler,ratelimiter-provider
+EOM
+
+cat <<EOM > /etc/servicecomb-kie/kie-conf.yaml
+db:
+  uri: mongodb://${MONGODB_USER}:${MONGODB_PWD}@${MONGODB_ADDR}/kie
+  type: mongodb
+  poolSize: 10
+  ssl: false
+  sslCA:
+  sslCert:
+EOM
+}
+
+
+echo "prepare config file...."
+writeConfig
+
+echo "start kie server"
+/opt/servicecomb-kie/kie --config /etc/servicecomb-kie/kie-conf.yaml
\ No newline at end of file