diff --git a/Dockerfile b/Dockerfile index 3044749854..381c83f925 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,22 +21,30 @@ # FROM alpine -MAINTAINER www.evennia.com +LABEL maintainer="www.evennia.com" # install compilation environment -RUN apk update && apk add python py-pip python-dev py-setuptools gcc \ -musl-dev jpeg-dev zlib-dev bash py2-openssl procps +RUN apk update && apk add bash gcc jpeg-dev musl-dev procps py-pip \ +py-setuptools py2-openssl python python-dev zlib-dev -# add the project source -ADD . /usr/src/evennia +# add the files required for pip installation +COPY ./setup.py /usr/src/evennia/ +COPY ./requirements.txt /usr/src/evennia/ +COPY ./evennia/VERSION.txt /usr/src/evennia/evennia/ +COPY ./bin /usr/src/evennia/bin/ # install dependencies RUN pip install --upgrade pip && pip install -e /usr/src/evennia --trusted-host pypi.python.org RUN pip install cryptography pyasn1 service_identity +# 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 + # add the game source when rebuilding a new docker image from inside # a game dir -ONBUILD ADD . /usr/src/game +ONBUILD COPY . /usr/src/game # make the game source hierarchy persistent with a named volume. # mount on-disk game location here when using the container diff --git a/evennia/objects/manager.py b/evennia/objects/manager.py index 4c81ea186a..9907c960d6 100644 --- a/evennia/objects/manager.py +++ b/evennia/objects/manager.py @@ -437,7 +437,7 @@ class ObjectDBManager(TypedObjectManager): """ Create and return a new object as a copy of the original object. All will be identical to the original except for the arguments given - specifically to this method. + specifically to this method. Object contents will not be copied. Args: original_object (Object): The object to make a copy from. @@ -502,6 +502,10 @@ class ObjectDBManager(TypedObjectManager): for script in original_object.scripts.all(): ScriptDB.objects.copy_script(script, new_obj=new_object) + # copy over all tags, if any + for tag in original_object.tags.get(return_tagobj=True, return_list=True): + new_object.tags.add(tag=tag.key, category=tag.category, data=tag.data) + return new_object def clear_all_sessids(self):