From 7fff2448a1a561a9b6adc420b01ff54793341dee Mon Sep 17 00:00:00 2001 From: Maxime Dor Date: Sat, 16 Dec 2017 19:58:11 +0100 Subject: [PATCH] Improve the docker experience - Only one env variable to configure on first usage - Auto-generate a default config - Improve doc --- Dockerfile | 5 +++++ docs/getting-started.md | 2 ++ docs/install/docker.md | 12 ++++++++++-- src/docker/start.sh | 24 ++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index fc44c52..e8ef3c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,11 @@ EXPOSE 8090 ADD build/libs/mxisd.jar /mxisd.jar ADD src/docker/start.sh /start.sh +RUN mkdir -p /var/mxisd ENV JAVA_OPTS="" +ENV CONF_FILE_PATH="/etc/mxisd/mxisd.yaml" +ENV SIGN_KEY_PATH="/var/mxisd/sign.key" +ENV SQLITE_DATABASE_PATH="/var/mxisd/mxisd.db" + CMD [ "/start.sh" ] \ No newline at end of file diff --git a/docs/getting-started.md b/docs/getting-started.md index d3e8006..a01bb3e 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -37,6 +37,8 @@ Install via: See the [Latest release](https://github.com/kamax-io/mxisd/releases/latest) for links to each. ## Configure +**NOTE**: please view the install instruction for your platform, as this step might be optional/handled for you. + Create/edit a minimal configuration (see installer doc for the location): ``` matrix.domain: 'MyMatrixDomain.org' diff --git a/docs/install/docker.md b/docs/install/docker.md index 1e8b88f..7f9cba2 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -5,10 +5,18 @@ Pull the latest stable image: docker pull kamax/mxisd ``` +## Configure +On first run, simply using `MATRIX_DOMAIN` as an environment variable will create a default config for you. +You can also provide a configuration file named `mxisd.yaml` in the volume mapped to `/etc/mxisd` before starting your +container. + ## Run -Run it (adapt volume paths to your host): +Use the following command after adapting to your needs: +- The `MATRIX_DOMAIN` environment variable to yours +- The volumes host paths + ``` -docker run --rm -v /data/mxisd/etc:/etc/mxisd -v /data/mxisd/var:/var/mxisd -p 8090:8090 -t kamax/mxisd +docker run --rm -e MATRIX_DOMAIN=example.org -v /data/mxisd/etc:/etc/mxisd -v /data/mxisd/var:/var/mxisd -p 8090:8090 -t kamax/mxisd ``` For more info, including the list of possible tags, see [the public repository](https://hub.docker.com/r/kamax/mxisd/) diff --git a/src/docker/start.sh b/src/docker/start.sh index b407047..91605b6 100755 --- a/src/docker/start.sh +++ b/src/docker/start.sh @@ -1,2 +1,26 @@ #!/bin/sh + +if ! [ -z "$CONF_FILE_PATH" ] && ! [ -f "CONF_FILE_PATH" ]; then + echo "Generating config file $CONF_FILE_PATH" + touch "CONF_FILE_PATH" + + if ! [ -z "$MATRIX_DOMAIN" ]; then + echo "Setting matrix domain to $MATRIX_DOMAIN" + echo "matrix.domain: $MATRIX_DOMAIN" >> "$CONF_FILE_PATH" + fi + + if ! [ -z "$SIGN_KEY_PATH" ]; then + echo "Setting signing key path to $SIGN_KEY_PATH" + echo "key.path: $SIGN_KEY_PATH" >> "$CONF_FILE_PATH" + fi + + if ! [ -z "$SQLITE_DATABASE_PATH" ]; then + echo "Setting SQLite DB path to $SQLITE_DATABASE_PATH" + echo "storage.provider.sqlite.database: $SQLITE_DATABASE_PATH" >> "$CONF_FILE_PATH" + fi + + echo "Starting mxisd..." + echo +fi + exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.config.location=/etc/mxisd/ -Dspring.config.name=mxisd -jar /mxisd.jar \ No newline at end of file