New Dockerfiles (#2325)

This commit is contained in:
Márk Sági-Kazár
2019-07-31 19:01:18 -07:00
committed by Quanzheng Long
parent f7d97748a8
commit 03c631ec98
9 changed files with 257 additions and 425 deletions
+1
View File
@@ -0,0 +1 @@
vendor/
+88
View File
@@ -0,0 +1,88 @@
ARG TARGET=server
# Build Cadence binaries
FROM golang:1.12.7-alpine AS builder
RUN apk add --update --no-cache ca-certificates make git curl mercurial bzr
WORKDIR /go/src/github.com/uber/cadence
RUN curl https://raw.githubusercontent.com/golang/dep/master/install.sh | INSTALL_DIRECTORY=/usr/local/bin sh
COPY Gopkg.* ./
RUN dep ensure -v -vendor-only
COPY . .
RUN sed -i 's/dep-ensured//g' Makefile
RUN CGO_ENABLED=0 make copyright cadence-cassandra-tool cadence-sql-tool cadence cadence-server
# Download dockerize
FROM alpine:3.10 AS dockerize
RUN apk add --no-cache openssl
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
# Alpine base image
FROM alpine:3.10 AS alpine
RUN apk add --update --no-cache ca-certificates tzdata bash curl
# set up nsswitch.conf for Go's "netgo" implementation
# https://github.com/gliderlabs/docker-alpine/issues/367#issuecomment-424546457
RUN test ! -e /etc/nsswitch.conf && echo 'hosts: files dns' > /etc/nsswitch.conf
SHELL ["/bin/bash", "-c"]
# Cadence server
FROM alpine AS cadence-server
ENV CADENCE_HOME /etc/cadence
RUN mkdir -p /etc/cadence
COPY --from=dockerize /usr/local/bin/dockerize /usr/local/bin
COPY --from=builder /go/src/github.com/uber/cadence/cadence-cassandra-tool /usr/local/bin
COPY --from=builder /go/src/github.com/uber/cadence/cadence-sql-tool /usr/local/bin
COPY --from=builder /go/src/github.com/uber/cadence/cadence /usr/local/bin
COPY --from=builder /go/src/github.com/uber/cadence/cadence-server /usr/local/bin
COPY --from=builder /go/src/github.com/uber/cadence/schema /etc/cadence/schema
COPY docker/entrypoint.sh /docker-entrypoint.sh
COPY config/dynamicconfig /etc/cadence/config/dynamicconfig
COPY docker/config_template.yaml /etc/cadence/config
WORKDIR /etc/cadence
ENV SERVICES="history,matching,frontend,worker"
EXPOSE 7933 7934 7935 7939
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD dockerize -template /etc/cadence/config/config_template.yaml:/etc/cadence/config/docker.yaml cadence-server --root $CADENCE_HOME --env docker start --services=$SERVICES
# All-in-one Cadence server
FROM cadence-server AS cadence-allinone
RUN apk add --update --no-cache ca-certificates py-pip mysql-client
RUN pip install cqlsh
COPY docker/start.sh /start.sh
CMD /start.sh
# Cadence CLI
FROM alpine AS cadence-cli
COPY --from=builder /go/src/github.com/uber/cadence/cadence /usr/local/bin
ENTRYPOINT ["cadence"]
# Final image
FROM cadence-${TARGET}
-72
View File
@@ -1,72 +0,0 @@
# Copyright (c) 2017 Uber Technologies, Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
# Build cadence binaries
FROM golang:1.12.1 as builder
# Specify the cadence version to be built into this docker image
# See https://github.com/uber/cadence/tags
ARG git_branch
RUN if [ -z "$git_branch" ]; then echo "ERROR: git_branch NOT SET. Usage: docker build . --build-arg git_branch=YOUR_CHECKOUT_BRANCH"; exit 1; else : ; fi
RUN go get -u github.com/golang/dep/cmd/dep
RUN go get -u golang.org/x/lint/golint
# get and compile cadence-server
RUN git clone https://github.com/uber/cadence.git /go/src/github.com/uber/cadence
RUN cd /go/src/github.com/uber/cadence && git fetch && git checkout $git_branch && git rev-parse HEAD && make bins_nothrift
# Final Cadence image
FROM debian:jessie
RUN apt-get update && apt-get install -y --no-install-recommends \
gettext-base \
wget \
vim \
tcpdump \
netcat \
python-pip \
mysql-client \
curl \
&& rm -rf /var/lib/apt/lists/*
RUN pip install cqlsh
RUN mkdir /cadence
ENV CADENCE_HOME /cadence
EXPOSE 7933 7934 7935 7939
COPY ./start.sh $CADENCE_HOME/start.sh
COPY ./config_template.yaml $CADENCE_HOME/config/docker_template_cassandra.yaml
COPY ./config_template_mysql.yaml $CADENCE_HOME/config/docker_template_mysql.yaml
RUN mkdir $CADENCE_HOME/config/dynamicconfig/
COPY ./dynamicconfig/development_es.yaml $CADENCE_HOME/config/dynamicconfig/development_es.yaml
RUN chmod a+x $CADENCE_HOME/start.sh
COPY --from=builder /go/src/github.com/uber/cadence/cadence-cassandra-tool /cadence
COPY --from=builder /go/src/github.com/uber/cadence/cadence-sql-tool /cadence
COPY --from=builder /go/src/github.com/uber/cadence/cadence /cadence
COPY --from=builder /go/src/github.com/uber/cadence/cadence-server /cadence
COPY --from=builder /go/src/github.com/uber/cadence/schema/ /cadence/schema/
WORKDIR $CADENCE_HOME
CMD ./start.sh $CADENCE_HOME
-21
View File
@@ -1,21 +0,0 @@
FROM golang:1.12.1 as go-builder
RUN apt-get update && apt-get install -y git
# Install glide
WORKDIR $GOPATH/src/github.com/Masterminds
RUN git clone https://github.com/Masterminds/glide.git
RUN cd glide && git checkout v0.12.3 && make bootstrap-dist && make install
ENV CADENCE_HOME $GOPATH/src/github.com/uber/cadence
RUN git clone https://github.com/uber/cadence.git $CADENCE_HOME
WORKDIR $CADENCE_HOME
RUN cd $CADENCE_HOME && make cadence
FROM phusion/baseimage:0.10.1
COPY --from=go-builder /go/src/github.com/uber/cadence/cadence .
COPY --from=go-builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
ENTRYPOINT ["./cadence"]
+135 -96
View File
@@ -1,121 +1,160 @@
log:
stdout: true
level: "${LOG_LEVEL}"
stdout: true
level: {{ default .Env.LOG_LEVEL "info" }}
persistence:
defaultStore: cass-default
visibilityStore: cass-visibility
numHistoryShards: ${NUM_HISTORY_SHARDS}
datastores:
cass-default:
cassandra:
hosts: "${CASSANDRA_SEEDS}"
keyspace: "${KEYSPACE}"
consistency: "${CASSANDRA_CONSISTENCY}"
cass-visibility:
cassandra:
hosts: "${CASSANDRA_SEEDS}"
keyspace: "${VISIBILITY_KEYSPACE}"
consistency: "${CASSANDRA_CONSISTENCY}"
numHistoryShards: {{ default .Env.NUM_HISTORY_SHARDS "4" }}
defaultStore: default
visibilityStore: visibility
datastores:
{{- $db := default .Env.DB "cassandra" | lower -}}
{{- if eq $db "cassandra" }}
default:
cassandra:
hosts: {{ default .Env.CASSANDRA_SEEDS "" }}
keyspace: {{ default .Env.KEYSPACE "cadence" }}
consistency: {{ default .Env.CASSANDRA_CONSISTENCY "One" }}
visibility:
cassandra:
hosts: {{ default .Env.CASSANDRA_SEEDS "" }}
keyspace: {{ default .Env.VISIBILITY_KEYSPACE "cadence" }}
consistency: {{ default .Env.CASSANDRA_CONSISTENCY "One" }}
{{- else if eq $db "mysql" }}
default:
sql:
driverName: "mysql"
databaseName: {{ default .Env.DBNAME "cadence" }}
connectAddr: "{{ default .Env.MYSQL_SEEDS "" }}:{{ default .Env.DB_PORT "3306" }}"
connectProtocol: "tcp"
user: {{ default .Env.MYSQL_USER "" }}
password: {{ default .Env.MYSQL_PWD "" }}
visibility:
sql:
driverName: "mysql"
databaseName: {{ default .Env.VISIBILITY_DBNAME "cadence_visibility" }}
connectAddr: "{{ default .Env.MYSQL_SEEDS "" }}:{{ default .Env.DB_PORT "3306" }}"
connectProtocol: "tcp"
user: {{ default .Env.MYSQL_USER "" }}
password: {{ default .Env.MYSQL_PWD "" }}
{{- end }}
ringpop:
name: cadence
bootstrapMode: hosts
bootstrapHosts: ${RINGPOP_SEEDS_JSON_ARRAY}
maxJoinDuration: 30s
name: cadence
bootstrapMode: hosts
{{- if .Env.RINGPOP_SEEDS }}
bootstrapHosts:
{{- range $seed := (split .Env.RINGPOP_SEEDS ",") }}
- {{ . }}
{{- end }}
{{- else }}
bootstrapHosts:
- {{ .Env.HOST_IP }}:7933
- {{ .Env.HOST_IP }}:7934
- {{ .Env.HOST_IP }}:7935
- {{ .Env.HOST_IP }}:7939
{{- end }}
maxJoinDuration: 30s
services:
frontend:
rpc:
port: 7933
bindOnIP: ${BIND_ON_IP}
metrics:
statsd:
hostPort: "${STATSD_ENDPOINT}"
prefix: "cadence-frontend"
frontend:
rpc:
port: 7933
bindOnIP: {{ default .Env.BIND_ON_IP "127.0.0.1" }}
{{- if .Env.STATSD_ENDPOINT }}
metrics:
statsd:
hostPort: {{ .Env.STATSD_ENDPOINT }}
prefix: "cadence-frontend"
{{- end }}
matching:
rpc:
port: 7935
bindOnIP: ${BIND_ON_IP}
metrics:
statsd:
hostPort: "${STATSD_ENDPOINT}"
prefix: "cadence-matching"
matching:
rpc:
port: 7935
bindOnIP: {{ default .Env.BIND_ON_IP "127.0.0.1" }}
{{- if .Env.STATSD_ENDPOINT }}
metrics:
statsd:
hostPort: {{ .Env.STATSD_ENDPOINT }}
prefix: "cadence-matching"
{{- end }}
history:
rpc:
port: 7934
bindOnIP: ${BIND_ON_IP}
metrics:
statsd:
hostPort: "${STATSD_ENDPOINT}"
prefix: "cadence-history"
history:
rpc:
port: 7934
bindOnIP: {{ default .Env.BIND_ON_IP "127.0.0.1" }}
{{- if .Env.STATSD_ENDPOINT }}
metrics:
statsd:
hostPort: {{ .Env.STATSD_ENDPOINT }}
prefix: "cadence-history"
{{- end }}
worker:
rpc:
port: 7939
bindOnIP: ${BIND_ON_IP}
metrics:
statsd:
hostPort: "${STATSD_ENDPOINT}"
prefix: "cadence-worker"
worker:
rpc:
port: 7939
bindOnIP: {{ default .Env.BIND_ON_IP "127.0.0.1" }}
{{- if .Env.STATSD_ENDPOINT }}
metrics:
statsd:
hostPort: {{ .Env.STATSD_ENDPOINT }}
prefix: "cadence-worker"
{{- end }}
clusterMetadata:
enableGlobalDomain: false
failoverVersionIncrement: 10
masterClusterName: "active"
currentClusterName: "active"
clusterInformation:
active:
enabled: true
initialFailoverVersion: 0
rpcName: "cadence-frontend"
rpcAddress: "127.0.0.1:7933"
enableGlobalDomain: false
failoverVersionIncrement: 10
masterClusterName: "active"
currentClusterName: "active"
clusterInformation:
active:
enabled: true
initialFailoverVersion: 0
rpcName: "cadence-frontend"
rpcAddress: "127.0.0.1:7933"
dcRedirectionPolicy:
policy: "noop"
toDC: ""
policy: "noop"
toDC: ""
archival:
status: "enabled"
enableReadFromArchival: true
defaultBucket: "cadence-development"
filestore:
storeDirectory: "/tmp/development/blobstore/"
status: "enabled"
enableReadFromArchival: true
defaultBucket: "cadence-development"
customBuckets:
- "custom-bucket-1"
- "custom-bucket-2"
filestore:
storeDirectory: "/tmp/development/blobstore/"
defaultBucket: "cadence-development"
customBuckets:
- "custom-bucket-1"
- "custom-bucket-2"
kafka:
tls:
enabled: false
clusters:
test:
brokers:
- ${KAFKA_SEEDS}:9092
topics:
cadence-visibility-dev:
cluster: test
cadence-visibility-dev-dlq:
cluster: test
applications:
visibility:
topic: cadence-visibility-dev
dlq-topic: cadence-visibility-dev-dlq
tls:
enabled: false
clusters:
test:
brokers:
- {{ default .Env.KAFKA_SEEDS "" }}:9092
topics:
cadence-visibility-dev:
cluster: test
cadence-visibility-dev-dlq:
cluster: test
applications:
visibility:
topic: cadence-visibility-dev
dlq-topic: cadence-visibility-dev-dlq
elasticsearch:
enable: false
url:
scheme: "http"
host: "${ES_SEEDS}:9200"
indices:
visibility: cadence-visibility-dev
enable: false
url:
scheme: "http"
host: "{{ default .Env.ES_SEEDS "" }}:9200"
indices:
visibility: cadence-visibility-dev
publicClient:
hostPort: ${BIND_ON_IP}:7933
hostPort: {{ default .Env.BIND_ON_IP "127.0.0.1" }}:7933
dynamicConfigClient:
filepath: ${DYNAMIC_CONFIG_FILE_PATH}
pollInterval: "60s"
filepath: {{ default .Env.DYNAMIC_CONFIG_FILE_PATH "/etc/cadence/config/dynamicconfig" }}
pollInterval: "60s"
-127
View File
@@ -1,127 +0,0 @@
log:
stdout: true
level: "${LOG_LEVEL}"
persistence:
defaultStore: mysql-default
visibilityStore: mysql-visibility
numHistoryShards: ${NUM_HISTORY_SHARDS}
datastores:
mysql-default:
sql:
driverName: "mysql"
databaseName: "${DBNAME}"
connectAddr: "${MYSQL_SEEDS}:3306"
connectProtocol: "tcp"
user: "${MYSQL_USER}"
password: "${MYSQL_PWD}"
mysql-visibility:
sql:
driverName: "mysql"
databaseName: "${VISIBILITY_DBNAME}"
connectAddr: "${MYSQL_SEEDS}:3306"
connectProtocol: "tcp"
user: "${MYSQL_USER}"
password: "${MYSQL_PWD}"
ringpop:
name: cadence
bootstrapMode: hosts
bootstrapHosts: ${RINGPOP_SEEDS_JSON_ARRAY}
maxJoinDuration: 30s
services:
frontend:
rpc:
port: 7933
bindOnIP: ${BIND_ON_IP}
metrics:
statsd:
hostPort: "${STATSD_ENDPOINT}"
prefix: "cadence-frontend"
matching:
rpc:
port: 7935
bindOnIP: ${BIND_ON_IP}
metrics:
statsd:
hostPort: "${STATSD_ENDPOINT}"
prefix: "cadence-matching"
history:
rpc:
port: 7934
bindOnIP: ${BIND_ON_IP}
metrics:
statsd:
hostPort: "${STATSD_ENDPOINT}"
prefix: "cadence-history"
worker:
rpc:
port: 7939
bindOnIP: ${BIND_ON_IP}
metrics:
statsd:
hostPort: "${STATSD_ENDPOINT}"
prefix: "cadence-worker"
clusterMetadata:
enableGlobalDomain: false
failoverVersionIncrement: 10
masterClusterName: "active"
currentClusterName: "active"
clusterInformation:
active:
enabled: true
initialFailoverVersion: 0
rpcName: "cadence-frontend"
rpcAddress: "127.0.0.1:7933"
dcRedirectionPolicy:
policy: "noop"
toDC: ""
archival:
status: "enabled"
enableReadFromArchival: true
defaultBucket: "cadence-development"
filestore:
storeDirectory: "/tmp/development/blobstore/"
defaultBucket: "cadence-development"
customBuckets:
- "custom-bucket-1"
- "custom-bucket-2"
kafka:
tls:
enabled: false
clusters:
test:
brokers:
- ${KAFKA_SEEDS}:9092
topics:
cadence-visibility-dev:
cluster: test
cadence-visibility-dev-dlq:
cluster: test
applications:
visibility:
topic: cadence-visibility-dev
dlq-topic: cadence-visibility-dev-dlq
elasticsearch:
enable: false
url:
scheme: "http"
host: "${ES_SEEDS}:9200"
indices:
visibility: cadence-visibility-dev
publicClient:
hostPort: ${BIND_ON_IP}:7933
dynamicConfigClient:
filepath: ${DYNAMIC_CONFIG_FILE_PATH}
pollInterval: "60s"
-29
View File
@@ -1,29 +0,0 @@
frontend.enableClientVersionCheck:
- value: true
system.enableVisibilityToKafka:
- value: true
system.enableReadVisibilityFromES:
- value: true
frontend.validSearchAttributes:
- value:
DomainID: 1
WorkflowID: 1
RunID: 1
WorkflowType: 1
StartTime: 2
ExecutionTime: 2
CloseTime: 2
CloseStatus: 2
HistoryLength: 2
CustomStringField: 0
CustomKeywordField: 1
CustomIntField: 2
CustomBoolField: 3
CustomDoubleField: 4
CustomDatetimeField: 5
project: 1
service: 1
environment: 1
addon: 1
addon-type: 1
user: 1
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
export HOST_IP=`hostname -i`
if [ "$BIND_ON_LOCALHOST" == true ] || [ "$BIND_ON_IP" == "127.0.0.1" ]; then
export BIND_ON_IP="127.0.0.1"
export HOST_IP="127.0.0.1"
elif [ -z "$BIND_ON_IP" ]; then
# not binding to localhost and bind_on_ip is empty - use default host ip addr
export BIND_ON_IP=$HOST_IP
elif [ "$BIND_ON_IP" != "0.0.0.0" ]; then
# binding to a user specified addr, make sure HOST_IP also uses the same addr
export HOST_IP=$BIND_ON_IP
fi
# this env variable is deprecated
export BIND_ON_LOCALHOST=false
exec "$@"
Regular → Executable
+14 -80
View File
@@ -1,66 +1,39 @@
#!/bin/bash -x
#!/bin/bash
# Copyright (c) 2017 Uber Technologies, Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
CADENCE_HOME=$1
DB="${DB:-cassandra}"
CFG_TEMPLATE=docker_template_$DB.yaml
ENABLE_ES="${ENABLE_ES:-false}"
ES_PORT="${ES_PORT:-9200}"
SERVICES="${SERVICES:-history,matching,frontend,worker}"
RF=${RF:-1}
export LOG_LEVEL="${LOG_LEVEL:-info}"
export NUM_HISTORY_SHARDS=${NUM_HISTORY_SHARDS:-4}
# cassandra env
export KEYSPACE="${KEYSPACE:-cadence}"
export VISIBILITY_KEYSPACE="${VISIBILITY_KEYSPACE:-cadence_visibility}"
export CASSANDRA_CONSISTENCY="${CASSANDRA_CONSISTENCY:-One}"
# mysql env
export DBNAME="${DBNAME:-cadence}"
export VISIBILITY_DBNAME="${VISIBILITY_DBNAME:-cadence_visibility}"
export DB_PORT=${DB_PORT:-3306}
setup_cassandra_schema() {
SCHEMA_DIR=$CADENCE_HOME/schema/cassandra/cadence/versioned
$CADENCE_HOME/cadence-cassandra-tool --ep $CASSANDRA_SEEDS create -k $KEYSPACE --rf $RF
$CADENCE_HOME/cadence-cassandra-tool --ep $CASSANDRA_SEEDS -k $KEYSPACE setup-schema -v 0.0
$CADENCE_HOME/cadence-cassandra-tool --ep $CASSANDRA_SEEDS -k $KEYSPACE update-schema -d $SCHEMA_DIR
cadence-cassandra-tool --ep $CASSANDRA_SEEDS create -k $KEYSPACE --rf $RF
cadence-cassandra-tool --ep $CASSANDRA_SEEDS -k $KEYSPACE setup-schema -v 0.0
cadence-cassandra-tool --ep $CASSANDRA_SEEDS -k $KEYSPACE update-schema -d $SCHEMA_DIR
VISIBILITY_SCHEMA_DIR=$CADENCE_HOME/schema/cassandra/visibility/versioned
$CADENCE_HOME/cadence-cassandra-tool --ep $CASSANDRA_SEEDS create -k $VISIBILITY_KEYSPACE --rf $RF
$CADENCE_HOME/cadence-cassandra-tool --ep $CASSANDRA_SEEDS -k $VISIBILITY_KEYSPACE setup-schema -v 0.0
$CADENCE_HOME/cadence-cassandra-tool --ep $CASSANDRA_SEEDS -k $VISIBILITY_KEYSPACE update-schema -d $VISIBILITY_SCHEMA_DIR
cadence-cassandra-tool --ep $CASSANDRA_SEEDS create -k $VISIBILITY_KEYSPACE --rf $RF
cadence-cassandra-tool --ep $CASSANDRA_SEEDS -k $VISIBILITY_KEYSPACE setup-schema -v 0.0
cadence-cassandra-tool --ep $CASSANDRA_SEEDS -k $VISIBILITY_KEYSPACE update-schema -d $VISIBILITY_SCHEMA_DIR
}
setup_mysql_schema() {
SCHEMA_DIR=$CADENCE_HOME/schema/mysql/v57/cadence/versioned
$CADENCE_HOME/cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD create --db $DBNAME
$CADENCE_HOME/cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD --db $DBNAME setup-schema -v 0.0
$CADENCE_HOME/cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD --db $DBNAME update-schema -d $SCHEMA_DIR
cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD create --db $DBNAME
cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD --db $DBNAME setup-schema -v 0.0
cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD --db $DBNAME update-schema -d $SCHEMA_DIR
VISIBILITY_SCHEMA_DIR=$CADENCE_HOME/schema/mysql/v57/visibility/versioned
$CADENCE_HOME/cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD create --db $VISIBILITY_DBNAME
$CADENCE_HOME/cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD --db $VISIBILITY_DBNAME setup-schema -v 0.0
$CADENCE_HOME/cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD --db $VISIBILITY_DBNAME update-schema -d $VISIBILITY_SCHEMA_DIR
cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD create --db $VISIBILITY_DBNAME
cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD --db $VISIBILITY_DBNAME setup-schema -v 0.0
cadence-sql-tool --ep $MYSQL_SEEDS -u $MYSQL_USER --pw $MYSQL_PWD --db $VISIBILITY_DBNAME update-schema -d $VISIBILITY_SCHEMA_DIR
}
setup_es_template() {
@@ -128,48 +101,9 @@ wait_for_db() {
fi
}
json_array() {
echo -n '['
while [ $# -gt 0 ]; do
x=${1//\\/\\\\}
echo -n \"${x//\"/\\\"}\"
[ $# -gt 1 ] && echo -n ', '
shift
done
echo ']'
}
init_env() {
export HOST_IP=`hostname --ip-address`
if [ "$BIND_ON_LOCALHOST" == true ] || [ "$BIND_ON_IP" == "127.0.0.1" ]; then
export BIND_ON_IP="127.0.0.1"
export HOST_IP="127.0.0.1"
elif [ -z "$BIND_ON_IP" ]; then
# not binding to localhost and bind_on_ip is empty - use default host ip addr
export BIND_ON_IP=$HOST_IP
elif [ "$BIND_ON_IP" != "0.0.0.0" ]; then
# binding to a user specified addr, make sure HOST_IP also uses the same addr
export HOST_IP=$BIND_ON_IP
fi
// this env variable is deprecated
export BIND_ON_LOCALHOST=false
if [ -z "$RINGPOP_SEEDS" ]; then
export RINGPOP_SEEDS_JSON_ARRAY="[\"$HOST_IP:7933\",\"$HOST_IP:7934\",\"$HOST_IP:7935\",\"$HOST_IP:7939\"]"
else
array=(${RINGPOP_SEEDS//,/ })
export RINGPOP_SEEDS_JSON_ARRAY=$(json_array "${array[@]}")
fi
}
init_env
wait_for_db
if [ "$SKIP_SCHEMA_SETUP" != true ]; then
setup_schema
fi
# fix up config
envsubst < config/$CFG_TEMPLATE > config/docker.yaml
./cadence-server --root $CADENCE_HOME --env docker start --services=$SERVICES
dockerize -template /etc/cadence/config/config_template.yaml:/etc/cadence/config/docker.yaml cadence-server --root $CADENCE_HOME --env docker start --services=$SERVICES