Change dockerfile entrypoint to launch evennia server, more suitable for docker-compose setups. Add websocket proxy envvar
This commit is contained in:
parent
87918e4ce0
commit
5ff1da8e09
4 changed files with 31 additions and 8 deletions
12
Dockerfile
12
Dockerfile
|
|
@ -5,11 +5,11 @@
|
||||||
# install `docker` (http://docker.com)
|
# install `docker` (http://docker.com)
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# cd to a folder where you want your game data to be (or where it already is).
|
# cd to a folder where you want your game data to be (or where it already is).
|
||||||
#
|
#
|
||||||
# docker run -it -p 4000:4000 -p 4001:4001 -p 4005:4005 -v $PWD:/usr/src/game evennia/evennia
|
# docker run -it -p 4000:4000 -p 4001:4001 -p 4005:4005 -v $PWD:/usr/src/game evennia/evennia
|
||||||
#
|
#
|
||||||
# (If your OS does not support $PWD, replace it with the full path to your current
|
# (If your OS does not support $PWD, replace it with the full path to your current
|
||||||
# folder).
|
# folder).
|
||||||
#
|
#
|
||||||
# You will end up in a shell where the `evennia` command is available. From here you
|
# You will end up in a shell where the `evennia` command is available. From here you
|
||||||
|
|
@ -30,10 +30,10 @@ RUN apk update && apk add python py-pip python-dev py-setuptools gcc musl-dev jp
|
||||||
ADD . /usr/src/evennia
|
ADD . /usr/src/evennia
|
||||||
|
|
||||||
# install dependencies
|
# install dependencies
|
||||||
RUN pip install -e /usr/src/evennia --trusted-host pypi.python.org
|
RUN pip install --upgrade pip && pip install /usr/src/evennia --trusted-host pypi.python.org
|
||||||
|
|
||||||
# add the game source when rebuilding a new docker image from inside
|
# add the game source when rebuilding a new docker image from inside
|
||||||
# a game dir
|
# a game dir
|
||||||
ONBUILD ADD . /usr/src/game
|
ONBUILD ADD . /usr/src/game
|
||||||
|
|
||||||
# make the game source hierarchy persistent with a named volume.
|
# make the game source hierarchy persistent with a named volume.
|
||||||
|
|
@ -48,7 +48,7 @@ WORKDIR /usr/src/game
|
||||||
ENV PS1 "evennia|docker \w $ "
|
ENV PS1 "evennia|docker \w $ "
|
||||||
|
|
||||||
# startup a shell when we start the container
|
# startup a shell when we start the container
|
||||||
ENTRYPOINT ["bash"]
|
ENTRYPOINT bash -c "source /usr/src/evennia/bin/unix/evennia-docker-start.sh"
|
||||||
|
|
||||||
# expose the telnet, webserver and websocket client ports
|
# expose the telnet, webserver and websocket client ports
|
||||||
EXPOSE 4000 4001 4005
|
EXPOSE 4000 4001 4005
|
||||||
|
|
|
||||||
13
bin/unix/evennia-docker-start.sh
Normal file
13
bin/unix/evennia-docker-start.sh
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# called by the Dockerfile to start the server in docker mode
|
||||||
|
|
||||||
|
# remove leftover .pid files (such as from when dropping the container)
|
||||||
|
rm /usr/src/game/server/*.pid >& /dev/null || true
|
||||||
|
|
||||||
|
# start evennia server; log to server.log but also output to stdout so it can
|
||||||
|
# be viewed with docker-compose logs
|
||||||
|
exec 3>&1; evennia start 2>&1 1>&3 | tee /usr/src/game/server/logs/server.log; exec 3>&-
|
||||||
|
|
||||||
|
# start a shell to keep the container running
|
||||||
|
bash
|
||||||
|
|
@ -83,7 +83,12 @@ WEBCLIENT_ENABLED = True
|
||||||
# default webclient will use this and only use the ajax version if the browser
|
# default webclient will use this and only use the ajax version if the browser
|
||||||
# is too old to support websockets. Requires WEBCLIENT_ENABLED.
|
# is too old to support websockets. Requires WEBCLIENT_ENABLED.
|
||||||
WEBSOCKET_CLIENT_ENABLED = True
|
WEBSOCKET_CLIENT_ENABLED = True
|
||||||
# Server-side websocket port to open for the webclient.
|
# Server-side websocket port to open for the webclient. Note that this value will
|
||||||
|
# be dynamically encoded in the webclient html page to allow the webclient to call
|
||||||
|
# home. If the external encoded value needs to be different than this, due to
|
||||||
|
# working through a proxy or docker port-remapping, the environment variable
|
||||||
|
# WEBCLIENT_CLIENT_PROXY_PORT can be used to override this port only for the
|
||||||
|
# front-facing client's sake.
|
||||||
WEBSOCKET_CLIENT_PORT = 4005
|
WEBSOCKET_CLIENT_PORT = 4005
|
||||||
# Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6.
|
# Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6.
|
||||||
WEBSOCKET_CLIENT_INTERFACE = '0.0.0.0'
|
WEBSOCKET_CLIENT_INTERFACE = '0.0.0.0'
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
# tuple.
|
# tuple.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import os
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from evennia.utils.utils import get_evennia_version
|
from evennia.utils.utils import get_evennia_version
|
||||||
|
|
||||||
|
|
@ -52,7 +53,11 @@ def set_webclient_settings():
|
||||||
global WEBCLIENT_ENABLED, WEBSOCKET_CLIENT_ENABLED, WEBSOCKET_PORT, WEBSOCKET_URL
|
global WEBCLIENT_ENABLED, WEBSOCKET_CLIENT_ENABLED, WEBSOCKET_PORT, WEBSOCKET_URL
|
||||||
WEBCLIENT_ENABLED = settings.WEBCLIENT_ENABLED
|
WEBCLIENT_ENABLED = settings.WEBCLIENT_ENABLED
|
||||||
WEBSOCKET_CLIENT_ENABLED = settings.WEBSOCKET_CLIENT_ENABLED
|
WEBSOCKET_CLIENT_ENABLED = settings.WEBSOCKET_CLIENT_ENABLED
|
||||||
WEBSOCKET_PORT = settings.WEBSOCKET_CLIENT_PORT
|
# if we are working through a proxy or uses docker port-remapping, the webclient port encoded
|
||||||
|
# in the webclient should be different than the one the server expects. Use the environment
|
||||||
|
# variable WEBSOCKET_CLIENT_PROXY_PORT if this is the case.
|
||||||
|
WEBSOCKET_PORT = int(os.environ.get("WEBSOCKET_CLIENT_PROXY_PORT", settings.WEBSOCKET_CLIENT_PORT))
|
||||||
|
# this is determined dynamically by the client and is less of an issue
|
||||||
WEBSOCKET_URL = settings.WEBSOCKET_CLIENT_URL
|
WEBSOCKET_URL = settings.WEBSOCKET_CLIENT_URL
|
||||||
set_webclient_settings()
|
set_webclient_settings()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue