Mercurial > public > ssdt-docker
annotate prod/install-docstore-app.sh @ 610:eac0afd727a8 tip
DS-56 Merge
author | calmes@ssdt-ohio.org |
---|---|
date | Wed, 02 Jul 2025 13:27:07 +0100 |
parents | 30a35d908d92 |
children |
rev | line source |
---|---|
609
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
1 #!/bin/bash |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
2 # |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
3 # read required env variables |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
4 BASEDIR="$PWD" |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
5 source $BASEDIR/.env/ssdt-document-store-shared.properties |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
6 source $BASEDIR/.env/ssdt-document-store.properties |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
7 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
8 # define entityId based environment variables |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
9 ES_SETTING_CLUSTER_NAME=${entityId}-document-store |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
10 ES_SETTING_NODE_NAME=${entityId}-ds-01 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
11 DOCUMENTSTORE_ELASTIC_HOST=${entityId}-document |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
12 ELASTIC_NETWORK=${entityId}-document |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
13 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
14 # create backup directory if it does not exist |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
15 BACKUP_DIR="$BASEDIR/backup" |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
16 if [ ! -d "$BACKUP_DIR" ] |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
17 then |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
18 mkdir "$BACKUP_DIR" |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
19 fi |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
20 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
21 # create docker network if it does not exist |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
22 if [ -z $(docker network ls --filter name=^${ELASTIC_NETWORK}$ --format="{{ .Name }}") ] |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
23 then |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
24 docker network create "${ELASTIC_NETWORK}"; |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
25 fi |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
26 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
27 # docker login |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
28 echo "Attempting to login to $artifactUrl" |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
29 docker login $artifactUrl -u $artifactUser -p $artifactPassword |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
30 # docker pull image |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
31 echo "Attempting to pull $artifactUrl/document-store:$DS_VERSION" |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
32 docker pull $artifactUrl/document-store:$DS_VERSION |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
33 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
34 # build docker run command based on environment variables provided |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
35 DOCKER_RUN="docker run --name=$ES_SETTING_NODE_NAME --restart=unless-stopped --log-driver local \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
36 --env-file $BASEDIR/.env/ssdt-document-store.properties \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
37 -e ELASTIC_PASSWORD=$ELASTIC_PASSWORD \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
38 --network=$ELASTIC_NETWORK \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
39 --ulimit memlock=-1:-1 \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
40 --ulimit nofile=65535:65535 \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
41 --group-add 0 \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
42 --mount type=bind,source=$BACKUP_DIR,destination=/usr/share/elasticsearch/backup/ \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
43 --mount type=volume,source=$entityId-document-data,destination=/usr/share/elasticsearch/data/ \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
44 --mount type=volume,source=$entityId-document-config,destination=/usr/share/elasticsearch/config/ \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
45 -p $DOCUMENTSTORE_ELASTIC_PORT:9200 \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
46 -p $DOCUMENTSTORE_TRANSPORT_PORT:9300 \ |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
47 " |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
48 if [ -d "$BASEDIR/jvm.options.d" ]; then |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
49 DOCKER_RUN="$DOCKER_RUN --mount type=bind,source=$BASEDIR/jvm.options.d,destination=/usr/share/elasticsearch/config/jvm.options.d/ " |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
50 fi |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
51 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
52 #echo "Executing docker run command $DOCKER_RUN" |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
53 DOCKER_RUN="$DOCKER_RUN -d docker-images.ssdt-ohio.org/document-store:${DS_VERSION:-latest}" |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
54 $DOCKER_RUN |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
55 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
56 #wait for instance to start |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
57 attempt=0 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
58 while [ $attempt -le 15 ]; do |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
59 attempt=$(( attempt + 1 )) |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
60 echo "Waiting for server to be up (attempt: $attempt)..." |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
61 result=$(docker inspect --format='{{.State.Health.Status}}' "$ES_SETTING_NODE_NAME") |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
62 if [ "$result" = "healthy" ] ; then |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
63 echo "Elasticsearch is up, preparing to copy certificates and generated properties" |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
64 break |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
65 fi |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
66 sleep 10 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
67 done |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
68 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
69 # copy elasticsearch certificate to basedir for further use if necessary |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
70 docker cp "$ES_SETTING_NODE_NAME":/usr/share/elasticsearch/config/certs/http_ca.crt "$BASEDIR" |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
71 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
72 # copy generated properites i.e. API keys etc to basedir for use in product integration |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
73 attempt=0 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
74 generated_contents=$(docker exec -it "$ES_SETTING_NODE_NAME" sed -rn 's/^DOCUMENTSTORE_ELASTIC_FINGERPRINT=([^\n]+)$/\1/p' /usr/share/elasticsearch/config/ssdt-document-store-generated.properties) |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
75 while [ "$generated_contents" == "" ] && [ $attempt -le 15 ]; do |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
76 attempt=$(( attempt + 1 )) |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
77 echo "Waiting for generated properties to be created (attempt: $attempt)..." |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
78 sleep 10 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
79 generated_contents=$(docker exec -it "$ES_SETTING_NODE_NAME" sed -rn 's/^DOCUMENTSTORE_ELASTIC_FINGERPRINT=([^\n]+)$/\1/p' /usr/share/elasticsearch/config/ssdt-document-store-generated.properties) |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
80 done |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
81 docker cp "$ES_SETTING_NODE_NAME":/usr/share/elasticsearch/config/ssdt-document-store-generated.properties "$BASEDIR"/.env |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
82 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
83 |
30a35d908d92
DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff
changeset
|
84 echo "Elasticsearch is up and running, certificate & generated properties copied" |