Skip to content

Commit aeeb0eb

Browse files
authored
Merge pull request #422 from mhajder/chore/dockerfile
chore: update Dockerfile
2 parents a9e48f8 + f027760 commit aeeb0eb

File tree

3 files changed

+110
-11
lines changed

3 files changed

+110
-11
lines changed

.dockerignore

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Docker ignore file to reduce build context size
2+
3+
# Temp files
4+
*~
5+
~*
6+
.*~
7+
\#*
8+
.#*
9+
*#
10+
dist
11+
12+
# Build files
13+
build
14+
dist
15+
pkg
16+
*.egg
17+
*.egg-info
18+
19+
# Debian Files
20+
debian/files
21+
debian/python-github-backup*
22+
23+
# Sphinx build
24+
doc/_build
25+
26+
# Generated man page
27+
doc/github_backup.1
28+
29+
# Annoying macOS files
30+
.DS_Store
31+
._*
32+
33+
# IDE configuration files
34+
.vscode
35+
.atom
36+
.idea
37+
*.code-workspace
38+
39+
# RSA
40+
id_rsa
41+
id_rsa.pub
42+
43+
# Virtual env
44+
venv
45+
.venv
46+
47+
# Git
48+
.git
49+
.gitignore
50+
.gitchangelog.rc
51+
.github
52+
53+
# Documentation
54+
*.md
55+
!README.md
56+
57+
# Environment variables files
58+
.env
59+
.env.*
60+
!.env.example
61+
*.log
62+
63+
# Cache files
64+
**/__pycache__/
65+
*.py[cod]
66+
67+
# Docker files
68+
docker-compose.yml
69+
Dockerfile*
70+
71+
# Other files
72+
release
73+
*.tar
74+
*.zip
75+
*.gzip

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*.py[oc]
1+
*.py[cod]
22

33
# Temp files
44
*~
@@ -33,6 +33,7 @@ doc/github_backup.1
3333
# IDE configuration files
3434
.vscode
3535
.atom
36+
.idea
3637

3738
README
3839

@@ -42,3 +43,4 @@ id_rsa.pub
4243

4344
# Virtual env
4445
venv
46+
.venv

Dockerfile

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,38 @@
1-
FROM python:3.9.18-slim
1+
FROM python:3.12-alpine3.22 AS builder
22

3-
RUN --mount=type=cache,target=/var/cache/apt \
4-
apt-get update && apt-get install -y git git-lfs
3+
RUN pip install --no-cache-dir --upgrade pip \
4+
&& pip install --no-cache-dir uv
55

6-
WORKDIR /usr/src/app
6+
WORKDIR /app
77

8-
COPY release-requirements.txt .
9-
RUN --mount=type=cache,target=/root/.cache/pip \
10-
pip install -r release-requirements.txt
8+
RUN --mount=type=cache,target=/root/.cache/uv \
9+
--mount=type=bind,source=requirements.txt,target=requirements.txt \
10+
--mount=type=bind,source=release-requirements.txt,target=release-requirements.txt \
11+
uv venv \
12+
&& uv pip install -r release-requirements.txt
1113

1214
COPY . .
13-
RUN --mount=type=cache,target=/root/.cache/pip \
14-
pip install .
1515

16-
ENTRYPOINT [ "github-backup" ]
16+
RUN --mount=type=cache,target=/root/.cache/uv \
17+
uv pip install .
18+
19+
20+
FROM python:3.12-alpine3.22
21+
ENV PYTHONUNBUFFERED=1
22+
23+
RUN apk add --no-cache \
24+
ca-certificates \
25+
git \
26+
git-lfs \
27+
&& addgroup -g 1000 appuser \
28+
&& adduser -D -u 1000 -G appuser appuser
29+
30+
COPY --from=builder --chown=appuser:appuser /app /app
31+
32+
WORKDIR /app
33+
34+
USER appuser
35+
36+
ENV PATH="/app/.venv/bin:$PATH"
37+
38+
ENTRYPOINT ["github-backup"]

0 commit comments

Comments
 (0)