From b38b693ee7c37a268fe9c4a18fe74393912ecea1 Mon Sep 17 00:00:00 2001 From: Robert Adams Date: Sat, 24 Apr 2021 16:08:53 -0700 Subject: [PATCH] Add scripts for running, updating, restarting, and stopping Docker image. Add docker/README.md to explain the use of the Docker image scripts. Update docs/RunningDockerImage.md with new repository location and updated notes on running. --- docker/README.md | 20 ++++++++++++++++++++ docker/restart-metaverse-server.sh | 7 +++++++ docker/run-metaverse-server.sh | 16 ++++++++++++++++ docker/stop-metaverse-server.sh | 7 +++++++ docker/update-metaverse-server.sh | 9 +++++++++ docs/RunningDockerImage.md | 28 +++++++++++++++------------- 6 files changed, 74 insertions(+), 13 deletions(-) create mode 100644 docker/README.md create mode 100755 docker/restart-metaverse-server.sh create mode 100755 docker/run-metaverse-server.sh create mode 100755 docker/stop-metaverse-server.sh create mode 100755 docker/update-metaverse-server.sh diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 00000000..5c6a7195 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,20 @@ +## Docker for Iamus Metaverse Server + +The files here are for creating and running Iamus under Docker. + +The `Dockerfile` is used to build the image with the `files` directory +holding the scripts that are copied into the image for its operation. +See the build action in `.github/workflows/docker-publish.yml` to see +the steps for building. + +The other script files here are for starting, running, restarting, and +updating a running Iamus metaverse-server. +The naming pretty obvious. + +To run Iamus with Docker, +read the information in `docs/RunningDockerImage.md` +for setup of the configuration files and MongoDB. +Then, on the server that has Docker and MongoDB installed, +clone the Iamus repository +and, from the directory with the created `config` directory, +execute `run-metaverse-server.sh` to start the server. diff --git a/docker/restart-metaverse-server.sh b/docker/restart-metaverse-server.sh new file mode 100755 index 00000000..11f16738 --- /dev/null +++ b/docker/restart-metaverse-server.sh @@ -0,0 +1,7 @@ +echo "==== stopping metaverseserver" +docker stop metaverseserver +echo "==== removing old metaverseserver image" +docker rm metaverseserver +echo "==== starting metaverseserver" +./run-metaverse-server.sh + diff --git a/docker/run-metaverse-server.sh b/docker/run-metaverse-server.sh new file mode 100755 index 00000000..d5ee6c74 --- /dev/null +++ b/docker/run-metaverse-server.sh @@ -0,0 +1,16 @@ +#! /bin/bash +# Start the metaverseserver with persistant data in local dir + +BASE=$(pwd) +cd "${BASE}" + +DVERSION=latest + +docker run -d \ + --name=metaverseserver \ + --restart=unless-stopped \ + -p 9400:9400 \ + -e IAMUS_CONFIG_FILE=/home/cadia/config/iamus.json \ + --network="host" \ + --volume ${BASE}/config:/home/cadia/config \ + ghcr.io/vircadia/iamus:${DVERSION} diff --git a/docker/stop-metaverse-server.sh b/docker/stop-metaverse-server.sh new file mode 100755 index 00000000..6d7efe3e --- /dev/null +++ b/docker/stop-metaverse-server.sh @@ -0,0 +1,7 @@ +#! /bin/bash +# Stops the metaverse server and cleans up + +echo "==== stopping metaverse-server" +docker stop metaverseserver +echo "==== removing old metaverse-server image" +docker rm metaverseserver diff --git a/docker/update-metaverse-server.sh b/docker/update-metaverse-server.sh new file mode 100755 index 00000000..5b9cdf49 --- /dev/null +++ b/docker/update-metaverse-server.sh @@ -0,0 +1,9 @@ +echo "==== fetching latest docker image for metaverseserver" +docker pull ghcr.io/vircadia/iamus:latest +echo "==== stopping metaverseserver" +docker stop metaverseserver +echo "==== removing old metaverseserver image" +docker rm metaverseserver +echo "==== starting metaverseserver" +./run-metaverse-server.sh + diff --git a/docs/RunningDockerImage.md b/docs/RunningDockerImage.md index 1d618d67..e55bed26 100755 --- a/docs/RunningDockerImage.md +++ b/docs/RunningDockerImage.md @@ -2,16 +2,14 @@ ## Docker Image -A Docker image is made of the latest release. -As of 20200819, the Docker image is stored at -hub.docker.com with the name "misterblue/vircadia-metaverse-server". -Someday CI will be integrated with this project and then the image may move. +Iamus can be packaged and run as a Docker image. +As of 20210424, the latest Docker image is stored in the +Github Container Registry +with the name "ghcr.io/vircadia/iamus". -As of 20200819, there is an instance of the Docker image running -at `metaverse.bluestuff.org`. For a description of that instance, -refer to the [test setup] document. - -To create your own Docker image, the process is: +The latest Docker image is created with Github Actions +(see `.github/workflows/docker-publish.yml`) +but, to create your own Docker image, the process is: ```sh git clone https://github.com/vircadia/Iamus.git @@ -130,13 +128,17 @@ EOFFF ``` This configuration file points the metaverse-server's storage to -the created directory and sets up logging to be verbose. -The `ConsoleLog` setting to `false` says to not log to the console -and let all logging go to the `content/Logs` directory. +the created directory. The `THE_ADDRESS_OF_ICE_SERVER` must be replaced with the IP address or domain name of the ice-server. +There are MANY, MANY more configuration parameters. +Refer to [https://github.com/vircadia/Iamus/blob/master/src/config.ts] +for the complete list of parameters. +What you put in `config/iamus.json` will overlay the defaults given +in that file. + ## Run the Metaverse-Server Docker Image I use a script to run the docker image: @@ -149,7 +151,7 @@ docker run -d \ -p 9400:9400 \ -e IAMUS_CONFIG_FILE=/home/cadia/config/iamus.json \ --volume ${BASE}/config:/home/cadia/config \ - misterblue/vircadia-metaverse-server + ghcr.io/vircadia/iamus:latest ``` If you change the port in the configuration file, remember to change the `-p`