From 338d5a956b4b61c3ee65517785433157a914d2c9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 20:51:37 +0000 Subject: [PATCH 1/2] chore(deps): bump the python-packages group with 2 updates Bumps the python-packages group with 2 updates: [certifi](https://github.com/certifi/python-certifi) and [charset-normalizer](https://github.com/jawah/charset_normalizer). Updates `certifi` from 2025.7.14 to 2025.8.3 - [Commits](https://github.com/certifi/python-certifi/compare/2025.07.14...2025.08.03) Updates `charset-normalizer` from 3.4.2 to 3.4.3 - [Release notes](https://github.com/jawah/charset_normalizer/releases) - [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md) - [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.3) --- updated-dependencies: - dependency-name: certifi dependency-version: 2025.8.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: python-packages - dependency-name: charset-normalizer dependency-version: 3.4.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: python-packages ... Signed-off-by: dependabot[bot] --- release-requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release-requirements.txt b/release-requirements.txt index 788fa95..1769460 100644 --- a/release-requirements.txt +++ b/release-requirements.txt @@ -1,8 +1,8 @@ autopep8==2.3.2 black==25.1.0 bleach==6.2.0 -certifi==2025.7.14 -charset-normalizer==3.4.2 +certifi==2025.8.3 +charset-normalizer==3.4.3 click==8.1.8 colorama==0.4.6 docutils==0.22 From f027760ac5b701ec7edffe72e265223821f9371b Mon Sep 17 00:00:00 2001 From: Mateusz Hajder <6783135+mhajder@users.noreply.github.com> Date: Tue, 12 Aug 2025 10:18:52 +0200 Subject: [PATCH 2/2] chore: update Dockerfile to use Python 3.12 and improve dependency installation --- .dockerignore | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ .gitignore | 4 ++- Dockerfile | 42 ++++++++++++++++++++++------- 3 files changed, 110 insertions(+), 11 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..07a3ea4 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,75 @@ +# Docker ignore file to reduce build context size + +# Temp files +*~ +~* +.*~ +\#* +.#* +*# +dist + +# Build files +build +dist +pkg +*.egg +*.egg-info + +# Debian Files +debian/files +debian/python-github-backup* + +# Sphinx build +doc/_build + +# Generated man page +doc/github_backup.1 + +# Annoying macOS files +.DS_Store +._* + +# IDE configuration files +.vscode +.atom +.idea +*.code-workspace + +# RSA +id_rsa +id_rsa.pub + +# Virtual env +venv +.venv + +# Git +.git +.gitignore +.gitchangelog.rc +.github + +# Documentation +*.md +!README.md + +# Environment variables files +.env +.env.* +!.env.example +*.log + +# Cache files +**/__pycache__/ +*.py[cod] + +# Docker files +docker-compose.yml +Dockerfile* + +# Other files +release +*.tar +*.zip +*.gzip diff --git a/.gitignore b/.gitignore index f0ed9db..652f035 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -*.py[oc] +*.py[cod] # Temp files *~ @@ -33,6 +33,7 @@ doc/github_backup.1 # IDE configuration files .vscode .atom +.idea README @@ -42,3 +43,4 @@ id_rsa.pub # Virtual env venv +.venv diff --git a/Dockerfile b/Dockerfile index 6217594..2c28829 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,38 @@ -FROM python:3.9.18-slim +FROM python:3.12-alpine3.22 AS builder -RUN --mount=type=cache,target=/var/cache/apt \ - apt-get update && apt-get install -y git git-lfs +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir uv -WORKDIR /usr/src/app +WORKDIR /app -COPY release-requirements.txt . -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install -r release-requirements.txt +RUN --mount=type=cache,target=/root/.cache/uv \ + --mount=type=bind,source=requirements.txt,target=requirements.txt \ + --mount=type=bind,source=release-requirements.txt,target=release-requirements.txt \ + uv venv \ + && uv pip install -r release-requirements.txt COPY . . -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install . -ENTRYPOINT [ "github-backup" ] +RUN --mount=type=cache,target=/root/.cache/uv \ + uv pip install . + + +FROM python:3.12-alpine3.22 +ENV PYTHONUNBUFFERED=1 + +RUN apk add --no-cache \ + ca-certificates \ + git \ + git-lfs \ + && addgroup -g 1000 appuser \ + && adduser -D -u 1000 -G appuser appuser + +COPY --from=builder --chown=appuser:appuser /app /app + +WORKDIR /app + +USER appuser + +ENV PATH="/app/.venv/bin:$PATH" + +ENTRYPOINT ["github-backup"]