Skip to content

Commit

Permalink
feat(dist): support pre-load test graph data in docker container (apa…
Browse files Browse the repository at this point in the history
…che#2241)

- Provide the related conf and groovy for user to pre load some data.
- Change the start-hugegraph.sh to get the environment variables to decide to pre-load or not.

---------

Co-authored-by: imbajin <jin@apache.org>
  • Loading branch information
2 people authored and DanGuge committed Sep 23, 2023
1 parent b1d325d commit ebfa8b4
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 6 deletions.
56 changes: 56 additions & 0 deletions hugegraph-server/hugegraph-dist/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Deploy Hugegraph server with docker

## 1. Deploy

We can use docker to quickly start an inner HugeGraph server with RocksDB in background.

1. Using docker run

Use `docker run -itd --name=graph -p 18080:8080 hugegraph/hugegraph` to start hugegraph server.

2. Using docker compose

We can also use `docker-compose up -d`. The `docker-compose.yaml` is below:

```yaml
version: '3'
services:
graph:
image: hugegraph/hugegraph
ports:
- 18080:8080
```
## 2. Create Sample Graph on Server Startup
If you want to **pre-load** some (test) data or graphs in container(by default), you can set the env `PRELOAD=ture`

If you want to customize the pre-loaded data, please mount the the groovy scripts (not necessary).



1. Using docker run

Use `docker run -itd --name=graph -p 18080:8080 -e PRELOAD=true -v /path/to/yourScript:/hugegraph/scripts/example.groovy hugegraph/hugegraph`
to start hugegraph server.

2. Using docker compose

We can also use `docker-compose up -d` to quickly start. The `docker-compose.yaml` is below:

```yaml
version: '3'
services:
graph:
image: hugegraph/hugegraph
environment:
- PRELOAD=true
volumes:
- /path/to/yourscript:/hugegraph/scripts/example.groovy
ports:
- 18080:8080
```

3. Using start-hugegraph.sh

If you deploy HugeGraph server without docker, you can also pass arguments using `-p`, like this: `bin/start-hugegraph.sh -p true`.
Original file line number Diff line number Diff line change
Expand Up @@ -18,33 +18,40 @@
OPEN_MONITOR="false"
OPEN_SECURITY_CHECK="true"
DAEMON="true"
PRELOAD="false"
#VERBOSE=""
GC_OPTION=""
USER_OPTION=""
SERVER_STARTUP_TIMEOUT_S=30

while getopts "d:g:m:s:j:t:v" arg; do
while getopts "d:g:m:p:s:j:t:v" arg; do
case ${arg} in
d) DAEMON="$OPTARG" ;;
g) GC_OPTION="$OPTARG" ;;
m) OPEN_MONITOR="$OPTARG" ;;
p) PRELOAD="$OPTARG" ;;
s) OPEN_SECURITY_CHECK="$OPTARG" ;;
j) USER_OPTION="$OPTARG" ;;
t) SERVER_STARTUP_TIMEOUT_S="$OPTARG" ;;
# TODO: should remove it in future (check the usage carefully)
v) VERBOSE="verbose" ;;
?) echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-s true|false] [-j java_options]
?) echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-p true|false] [-s true|false] [-j java_options]
[-t timeout]" && exit 1 ;;
esac
done

if [[ "$OPEN_MONITOR" != "true" && "$OPEN_MONITOR" != "false" ]]; then
echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-s true|false] [-j java_options]"
echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-p true|false] [-s true|false] [-j java_options]"
exit 1
fi

if [[ "$OPEN_SECURITY_CHECK" != "true" && "$OPEN_SECURITY_CHECK" != "false" ]]; then
echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-s true|false] [-j java_options]"
echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-p true|false] [-s true|false] [-j java_options]"
exit 1
fi

if [[ "$PRELOAD" != "true" && "$PRELOAD" != "false" ]]; then
echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-p true|false] [-s true|false] [-j java_options]"
exit 1
fi

Expand All @@ -62,6 +69,7 @@ BIN=$(abs_path)
TOP="$(cd "$BIN"/../ && pwd)"
CONF="$TOP/conf"
LOGS="$TOP/logs"
SCRIPTS="$TOP/scripts"
PID_FILE="$BIN/pid"

. "$BIN"/util.sh
Expand All @@ -79,13 +87,23 @@ if [ ! -d "$LOGS" ]; then
mkdir -p "$LOGS"
fi

GREMLIN_SERVER_CONF="gremlin-server.yaml"
if [[ $PRELOAD == "true" ]]; then
GREMLIN_SERVER_CONF="gremlin-server-preload.yaml"
EXAMPLE_SCRPIT="example-preload.groovy"
cp "${CONF}"/gremlin-server.yaml "${CONF}/${GREMLIN_SERVER_CONF}"
cp "${SCRIPTS}"/example.groovy "${SCRIPTS}/${EXAMPLE_SCRPIT}"
sed -i -e "s/empty-sample.groovy/$EXAMPLE_SCRPIT/g" "${CONF}/${GREMLIN_SERVER_CONF}"
sed -i -e '/registerRocksDB/d; /serverStarted/d' "${SCRIPTS}/${EXAMPLE_SCRPIT}"
fi

if [[ $DAEMON == "true" ]]; then
echo "Starting HugeGraphServer in daemon mode..."
"${BIN}"/hugegraph-server.sh "${CONF}"/gremlin-server.yaml "${CONF}"/rest-server.properties \
"${BIN}"/hugegraph-server.sh "${CONF}/${GREMLIN_SERVER_CONF}" "${CONF}"/rest-server.properties \
"${OPEN_SECURITY_CHECK}" "${USER_OPTION}" "${GC_OPTION}" >>"${LOGS}"/hugegraph-server.log 2>&1 &
else
echo "Starting HugeGraphServer in foreground mode..."
"${BIN}"/hugegraph-server.sh "${CONF}"/gremlin-server.yaml "${CONF}"/rest-server.properties \
"${BIN}"/hugegraph-server.sh "${CONF}/${GREMLIN_SERVER_CONF}" "${CONF}"/rest-server.properties \
"${OPEN_SECURITY_CHECK}" "${USER_OPTION}" "${GC_OPTION}" >>"${LOGS}"/hugegraph-server.log 2>&1
fi

Expand Down

0 comments on commit ebfa8b4

Please sign in to comment.