From cf96371b90f5333d7a6f3743ff5acc113615d86d Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Mon, 5 May 2025 15:42:12 +0200 Subject: [PATCH 1/2] Fix formatting errors warnings --- src/newsreader/conf/base.py | 8 +------- src/newsreader/conf/dev.py | 2 +- src/newsreader/conf/docker.py | 2 +- src/newsreader/conf/production.py | 5 +---- src/newsreader/conf/utils.py | 2 +- 5 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/newsreader/conf/base.py b/src/newsreader/conf/base.py index b13d732..220e8d1 100644 --- a/src/newsreader/conf/base.py +++ b/src/newsreader/conf/base.py @@ -1,7 +1,3 @@ -import os - -from pathlib import Path - from dotenv import load_dotenv from newsreader.conf.utils import get_env, get_root_dir @@ -186,9 +182,7 @@ USE_TZ = True STATIC_URL = "/static/" STATIC_ROOT = BASE_DIR / "static" -STATICFILES_DIRS = ( - DJANGO_PROJECT_DIR / "static", -) +STATICFILES_DIRS = (DJANGO_PROJECT_DIR / "static",) STATICFILES_FINDERS = [ "django.contrib.staticfiles.finders.FileSystemFinder", diff --git a/src/newsreader/conf/dev.py b/src/newsreader/conf/dev.py index 2bd7625..57aaff3 100644 --- a/src/newsreader/conf/dev.py +++ b/src/newsreader/conf/dev.py @@ -11,7 +11,7 @@ EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" INSTALLED_APPS += ["debug_toolbar", "django_extensions"] # noqa: F405 -TEMPLATES[0]["OPTIONS"]["context_processors"].append( +TEMPLATES[0]["OPTIONS"]["context_processors"].append( # noqa: F405 "django.template.context_processors.debug", ) diff --git a/src/newsreader/conf/docker.py b/src/newsreader/conf/docker.py index 0bddf32..3485bf3 100644 --- a/src/newsreader/conf/docker.py +++ b/src/newsreader/conf/docker.py @@ -17,7 +17,7 @@ LOGGING["loggers"].update( # noqa: F405 EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" -TEMPLATES[0]["OPTIONS"]["context_processors"].append( +TEMPLATES[0]["OPTIONS"]["context_processors"].append( # noqa: F405 "django.template.context_processors.debug", ) diff --git a/src/newsreader/conf/production.py b/src/newsreader/conf/production.py index bfe665d..e4053ec 100644 --- a/src/newsreader/conf/production.py +++ b/src/newsreader/conf/production.py @@ -1,5 +1,3 @@ -import os - from newsreader.conf.utils import get_env from .base import * # noqa: F403 @@ -11,8 +9,7 @@ DEBUG = False SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") ADMINS = [ - ("", email) - for email in get_env("ADMINS", split=",", required=False, default=[]) + ("", email) for email in get_env("ADMINS", split=",", required=False, default=[]) ] # Project settings diff --git a/src/newsreader/conf/utils.py b/src/newsreader/conf/utils.py index 2e084f6..c46b59d 100644 --- a/src/newsreader/conf/utils.py +++ b/src/newsreader/conf/utils.py @@ -14,7 +14,7 @@ def get_env( cast: Type = str, required: bool = True, default: Any = None, - split: str = "" + split: str = "", ) -> Any: if cast is not str and split: raise TypeError(f"Split is not possible with {cast}") From 116e2c15778fa2f33145af2e8319b7b7408c051a Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Mon, 5 May 2025 16:22:07 +0200 Subject: [PATCH 2/2] Fix cache permissions see https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/reference.md#run---mounttypecache --- Dockerfile | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index a92172f..116d20a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,9 @@ # stage 1 FROM python:3.11-alpine AS backend -ARG USER_UID=1000 -ARG GROUP_UID=1000 +ARG USER_ID=1000 +ARG GROUP_ID=1000 +ARG UV_LINK_MODE=copy RUN apk update \ && apk add --no-cache \ @@ -10,7 +11,7 @@ RUN apk update \ curl \ gettext -RUN addgroup -g $USER_UID newsreader && adduser -Du $GROUP_UID -G newsreader newsreader +RUN addgroup -g $USER_ID newsreader && adduser -Du $GROUP_ID -G newsreader newsreader RUN mkdir --parents /app/src /app/logs /app/media /app/bin /app/static \ && chown -R newsreader:newsreader /app @@ -23,7 +24,7 @@ COPY --chown=newsreader:newsreader uv.lock pyproject.toml /app/ COPY --from=ghcr.io/astral-sh/uv:python3.11-alpine /usr/local/bin/uv /bin/uv -RUN --mount=type=cache,target=$HOME/.cache/uv \ +RUN --mount=type=cache,uid=$USER_ID,gid=$GROUP_ID,target=/home/newsreader/.cache/uv \ uv sync --frozen --no-default-groups --no-install-project COPY --chown=newsreader:newsreader ./bin/docker-entrypoint.sh /app/bin/docker-entrypoint.sh @@ -45,7 +46,7 @@ USER node COPY --chown=node:node ./package*.json ./webpack.*.js ./babel.config.js /app/ -RUN --mount=type=cache,target=$HOME/.npm \ +RUN --mount=type=cache,uid=1000,gid=1000,target=/home/node/.npm \ npm ci COPY --chown=node:node ./src /app/src @@ -60,7 +61,7 @@ FROM backend AS production COPY --from=frontend-build --chown=newsreader:newsreader \ /app/src/newsreader/static /app/src/newsreader/static -RUN --mount=type=cache,target=$HOME/.cache/uv \ +RUN --mount=type=cache,uid=$USER_ID,gid=$GROUP_ID,target=/home/newsreader/.cache/uv \ uv sync --frozen --only-group production --extra sentry COPY --chown=newsreader:newsreader ./src /app/src @@ -75,5 +76,5 @@ RUN uv run --no-sync -- src/manage.py collectstatic --noinput # (optional) stage 4 FROM backend AS development -RUN --mount=type=cache,target=$HOME/.cache/uv \ +RUN --mount=type=cache,uid=$USER_ID,gid=$GROUP_ID,target=/home/newsreader/.cache/uv \ uv sync --frozen --group development