evennia/Dockerfile

98 lines
3.7 KiB
Text
Raw Normal View History

#####
# Base docker image for running Evennia-based games in a container.
#
2017-10-20 00:25:33 +02:00
# Install:
2021-06-23 20:05:25 +12:00
# install `docker` (https://docker.com)
#
2017-10-20 00:25:33 +02:00
# Usage:
# cd to a folder where you want your game data to be (or where it already is).
#
# docker run -it --rm -p 4000:4000 -p 4001:4001 -p 4002:4002 -v $PWD:/usr/src/game evennia/evennia
#
# (If your OS does not support $PWD, replace it with the full path to your current
2017-10-20 00:25:33 +02:00
# folder).
#
# You will end up in a shell where the `evennia` command is available. From here you
2019-10-01 11:29:47 +02:00
# can initialize and/or run the game normally. Use Ctrl-D to exit the evennia docker container.
# For more info see: https://github.com/evennia/evennia/wiki/Getting-Started#quick-start
2017-10-20 00:25:33 +02:00
#
# You can also start evennia directly by passing arguments to the folder:
#
# docker run -it --rm -p 4000:4000 -p 4001:4001 -p 4002:4002 -v $PWD:/usr/src/game evennia/evennia evennia start -l
#
# This will start Evennia running as the core process of the container. Note that you *must* use -l
2019-10-01 11:29:47 +02:00
# or one of the foreground modes (like evennia ipstart), since otherwise the container will immediately
# die because of having no foreground process.
#
2026-02-15 00:42:28 +01:00
# Build modes:
# Default build mode is editable and installs local Evennia source as:
# pip install -e /usr/src/evennia[extra]
# This is convenient for development of both game code and Evennia core.
#
# To instead build from the latest Evennia release on PyPI:
# docker build --build-arg EVENNIA_INSTALL_MODE=pypi -t evennia/evennia .
#
# Editable mode development tip:
# Mount your Evennia checkout to /usr/src/evennia to edit the core live:
# docker run -it --rm -p 4000:4000 -p 4001:4001 -p 4002:4002 \
# -v $PWD:/usr/src/game -v /path/to/evennia:/usr/src/evennia evennia/evennia
#
2017-10-20 00:25:33 +02:00
# The evennia/evennia base image is found on DockerHub and can also be used
# as a base for creating your own custom containerized Evennia game. For more
2022-02-05 18:27:18 +01:00
# info, see https://evennia.com/docs/latest/Setup/Installation-Docker
#
2026-02-15 00:42:28 +01:00
FROM python:3.13-alpine
2016-12-14 19:21:59 -06:00
2022-12-02 20:36:40 +01:00
LABEL maintainer="https://www.evennia.com"
2026-02-15 00:42:28 +01:00
ARG EVENNIA_INSTALL_MODE=editable
2017-10-20 23:28:59 +02:00
2016-12-14 19:21:59 -06:00
# install compilation environment
RUN apk update && apk add --no-cache bash gcc jpeg-dev musl-dev procps \
libffi-dev openssl-dev zlib-dev gettext \
g++ gfortran python3-dev cmake openblas-dev
2016-12-14 19:21:59 -06:00
# add the project source; this should always be done after all
# expensive operations have completed to avoid prematurely
# invalidating the build cache.
COPY . /usr/src/evennia
2026-02-15 00:42:28 +01:00
# install dependencies/evennia
# EVENNIA_INSTALL_MODE options:
# - editable (default): install local source in editable mode for Evennia dev.
# - pypi: install latest Evennia release from PyPI.
RUN pip install --no-cache-dir --upgrade pip && \
if [ "$EVENNIA_INSTALL_MODE" = "pypi" ]; then \
pip install --no-cache-dir --upgrade evennia[extra]; \
else \
pip install --no-cache-dir -e /usr/src/evennia[extra]; \
fi
2017-10-20 23:10:08 +02:00
# add the game source when rebuilding a new docker image from inside
# a game dir
2023-11-23 22:02:34 -05:00
ONBUILD COPY . /usr/src/game
2016-12-14 19:21:59 -06:00
# make the game source hierarchy persistent with a named volume.
2017-10-20 23:10:08 +02:00
# mount on-disk game location here when using the container
# to just get an evennia environment.
VOLUME /usr/src/game
2016-12-14 19:21:59 -06:00
# set the working directory
2017-10-20 00:25:33 +02:00
WORKDIR /usr/src/game
2016-12-14 19:21:59 -06:00
# set bash prompt and pythonpath to evennia lib
2026-02-15 00:42:28 +01:00
ENV PS1="evennia|docker \w $ "
ENV PYTHONPATH=/usr/src/evennia
2017-10-20 00:45:11 +02:00
# create and switch to a non-root user for runtime security
# -D - do not set a password
# -H - do not create a home directory
# -s /bin/false - set login shell to /bin/false
2022-12-02 20:36:40 +01:00
# RUN adduser -D -H -s /bin/false evennia
# USER evennia
2017-10-20 00:25:33 +02:00
# startup a shell when we start the container
ENTRYPOINT ["/usr/src/evennia/bin/unix/evennia-docker-start.sh"]
2016-12-14 19:21:59 -06:00
# expose the telnet, webserver and websocket client ports
EXPOSE 4000 4001 4002