diff --git a/docker/Dockerfile b/docker/Dockerfile index 7322f7705770f8fe1614fe1f84e599929bc87bcc..e097a30bbcd099fc57ba9a71938b5ccf471f2d2e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -24,10 +24,23 @@ ENV PATH="${PYTHON_VENV_PATH}/bin:$PATH" VIRTUAL_ENV=${PYTHON_VENV_PATH} RUN --mount=type=cache,mode=0777,sharing=locked,target=${APT_CACHE_DIR} \ useradd -o -d /clive -ms /bin/bash -u ${CLIVE_UID} -g users -c "clive application account" "clive" && \ - mkdir -p /clive && chown -R clive /clive && mkdir -vp "${PYTHON_VENV_PATH}" && chown -R clive "${PYTHON_VENV_PATH}" && \ + mkdir -p /clive && mkdir -vp "${PYTHON_VENV_PATH}" && \ + chown -R clive:users /clive && \ + chmod -R g+ws /clive && \ + chown -R clive:users "${PYTHON_VENV_PATH}" && \ + chmod -R g+ws "${PYTHON_VENV_PATH}" && \ chown -R clive:users /var/cache/ && \ chmod -R 777 /var/cache/ +# Set up a dedicated cache directory for Python bytecode (applies to both the virtual env and standard Python modules). +# Normally, Python stores the cache in __pycache__ folders separately within the venv and the Python installation directory. +# A lack of cache permissions or skipping the cache can cause a noticeable drop in performance. +ENV PYTHON_CACHE_PATH="/var/cache/python" +ENV PYTHONPYCACHEPREFIX="${PYTHON_CACHE_PATH}" +RUN mkdir "${PYTHON_CACHE_PATH}" && \ + chown -R clive:users "${PYTHON_CACHE_PATH}" && \ + chmod -R 777 "${PYTHON_CACHE_PATH}" + USER clive SHELL ["/bin/bash", "-c"] @@ -62,7 +75,11 @@ ENV PATH="${PYTHON_VENV_PATH}/bin:$PATH" VIRTUAL_ENV=${PYTHON_VENV_PATH} RUN --mount=type=cache,mode=0777,sharing=locked,target=${APT_CACHE_DIR} \ useradd -o -d /clive -ms /bin/bash -u ${CLIVE_UID} -g users -c "clive application account" "clive" && \ - mkdir -p /clive && chown -R clive /clive && mkdir -vp "${PYTHON_VENV_PATH}" && chown -R clive "${PYTHON_VENV_PATH}" && \ + mkdir -p /clive && mkdir -vp "${PYTHON_VENV_PATH}" && \ + chown -R clive:users /clive && \ + chmod -R g+ws /clive && \ + chown -R clive:users "${PYTHON_VENV_PATH}" && \ + chmod -R g+ws "${PYTHON_VENV_PATH}" && \ chown -R clive:users /var/cache/ && \ chmod -R 777 /var/cache/