mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 21:06:30 +01:00
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)
|
||||
#
|
||||
# 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
|
||||
#
|
||||
# (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).
|
||||
#
|
||||
# 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
|
||||
|
||||
# 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
|
||||
# a game dir
|
||||
# a game dir
|
||||
ONBUILD ADD . /usr/src/game
|
||||
|
||||
# make the game source hierarchy persistent with a named volume.
|
||||
|
|
@ -48,7 +48,7 @@ WORKDIR /usr/src/game
|
|||
ENV PS1 "evennia|docker \w $ "
|
||||
|
||||
# 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 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
|
||||
# is too old to support websockets. Requires WEBCLIENT_ENABLED.
|
||||
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
|
||||
# Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6.
|
||||
WEBSOCKET_CLIENT_INTERFACE = '0.0.0.0'
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
# tuple.
|
||||
#
|
||||
|
||||
import os
|
||||
from django.conf import settings
|
||||
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
|
||||
WEBCLIENT_ENABLED = settings.WEBCLIENT_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
|
||||
set_webclient_settings()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue