Skip to content
This repository was archived by the owner on Sep 17, 2025. It is now read-only.

Commit 776d107

Browse files
rashtaoarcanefoam
authored andcommitted
docker scripts
1 parent f3b2a68 commit 776d107

File tree

5 files changed

+114
-1
lines changed

5 files changed

+114
-1
lines changed

.github/workflows/maven.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ on:
1010
branches: [ "master" ]
1111

1212
jobs:
13-
build:
13+
test:
1414

1515
runs-on: ubuntu-latest
1616

docker/jwtHeader

Whitespace-only changes.

docker/jwtSecret

Whitespace-only changes.

docker/server.pem

Whitespace-only changes.

docker/start_db.sh

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#!/bin/bash
2+
3+
# Configuration environment variables:
4+
# STARTER_MODE: (single|cluster|activefailover), default single
5+
# DOCKER_IMAGE: ArangoDB docker image, default docker.io/arangodb/arangodb:latest
6+
# STARTER_DOCKER_IMAGE: ArangoDB Starter docker image, default docker.io/arangodb/arangodb-starter:latest
7+
# SSL: (true|false), default false
8+
# ARANGO_LICENSE_KEY: only required for ArangoDB Enterprise
9+
10+
# EXAMPLE:
11+
# STARTER_MODE=cluster SSL=true ./start_db.sh
12+
13+
STARTER_MODE=${STARTER_MODE:=single}
14+
DOCKER_IMAGE=${DOCKER_IMAGE:=docker.io/arangodb/arangodb:latest}
15+
STARTER_DOCKER_IMAGE=${STARTER_DOCKER_IMAGE:=docker.io/arangodb/arangodb-starter:latest}
16+
SSL=${SSL:=false}
17+
COMPRESSION=${COMPRESSION:=false}
18+
19+
GW=172.28.0.1
20+
docker network create arangodb --subnet 172.28.0.0/16
21+
22+
# exit when any command fails
23+
set -e
24+
25+
docker pull $STARTER_DOCKER_IMAGE
26+
docker pull $DOCKER_IMAGE
27+
28+
LOCATION=$(pwd)/$(dirname "$0")
29+
AUTHORIZATION_HEADER=$(cat "$LOCATION"/jwtHeader)
30+
31+
STARTER_ARGS=
32+
SCHEME=http
33+
ARANGOSH_SCHEME=http+tcp
34+
COORDINATORS=("$GW:8529" "$GW:8539" "$GW:8549")
35+
36+
if [ "$STARTER_MODE" == "single" ]; then
37+
COORDINATORS=("$GW:8529")
38+
fi
39+
40+
if [ "$SSL" == "true" ]; then
41+
STARTER_ARGS="$STARTER_ARGS --ssl.keyfile=/data/server.pem"
42+
SCHEME=https
43+
ARANGOSH_SCHEME=http+ssl
44+
fi
45+
46+
if [ "$COMPRESSION" == "true" ]; then
47+
STARTER_ARGS="${STARTER_ARGS} --all.http.compress-response-threshold=1"
48+
fi
49+
50+
# data volume
51+
docker create -v /data --name arangodb-data alpine:3 /bin/true
52+
docker cp "$LOCATION"/jwtSecret arangodb-data:/data
53+
docker cp "$LOCATION"/server.pem arangodb-data:/data
54+
55+
docker run -d \
56+
--name=adb \
57+
-p 8528:8528 \
58+
--volumes-from arangodb-data \
59+
-v /var/run/docker.sock:/var/run/docker.sock \
60+
-e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" \
61+
$STARTER_DOCKER_IMAGE \
62+
$STARTER_ARGS \
63+
--docker.net-mode=default \
64+
--docker.container=adb \
65+
--auth.jwt-secret=/data/jwtSecret \
66+
--starter.address="${GW}" \
67+
--docker.image="${DOCKER_IMAGE}" \
68+
--starter.local --starter.mode=${STARTER_MODE} --all.log.level=debug --all.log.output=+ --log.verbose \
69+
--all.server.descriptors-minimum=1024 --all.javascript.allow-admin-execute=true
70+
71+
72+
wait_server() {
73+
# shellcheck disable=SC2091
74+
until $(curl --output /dev/null --insecure --fail --silent --head -i -H "$AUTHORIZATION_HEADER" "$SCHEME://$1/_api/version"); do
75+
printf '.'
76+
sleep 1
77+
done
78+
}
79+
80+
echo "Waiting..."
81+
82+
for a in ${COORDINATORS[*]} ; do
83+
wait_server "$a"
84+
done
85+
86+
set +e
87+
for a in ${COORDINATORS[*]} ; do
88+
echo ""
89+
echo "Setting username and password..."
90+
docker run --rm ${DOCKER_IMAGE} arangosh --server.endpoint="$ARANGOSH_SCHEME://$a" --server.authentication=false --javascript.execute-string='require("org/arangodb/users").update("root", "test")'
91+
done
92+
set -e
93+
94+
for a in ${COORDINATORS[*]} ; do
95+
echo ""
96+
echo "Requesting endpoint version..."
97+
curl -u root:test --insecure --fail "$SCHEME://$a/_api/version"
98+
done
99+
100+
echo ""
101+
echo ""
102+
echo "Done, your deployment is reachable at: "
103+
for a in ${COORDINATORS[*]} ; do
104+
echo "$SCHEME://$a"
105+
echo ""
106+
done
107+
108+
if [ "$STARTER_MODE" == "activefailover" ]; then
109+
LEADER=$("$LOCATION"/find_active_endpoint.sh)
110+
echo "Leader: $SCHEME://$LEADER"
111+
echo ""
112+
fi
113+

0 commit comments

Comments
 (0)