|
1 | | -FROM python:3.13-slim-bookworm as builder |
| 1 | +FROM python:3.13-slim-bookworm AS builder |
2 | 2 |
|
3 | 3 | RUN apt-get update \ |
4 | | - && apt-get -y install g++ ca-certificates curl gnupg \ |
5 | | - && apt-get clean |
| 4 | + && apt-get install -y --no-install-recommends \ |
| 5 | + g++ \ |
| 6 | + ca-certificates \ |
| 7 | + curl \ |
| 8 | + gnupg \ |
| 9 | + && rm -rf /var/lib/apt/lists/* |
6 | 10 |
|
7 | 11 | ENV NODE_MAJOR=20 |
8 | | -RUN mkdir -p /etc/apt/keyrings && \ |
9 | | - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ |
10 | | - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \ |
11 | | - apt-get update && apt-get install nodejs -y |
| 12 | + |
| 13 | +RUN mkdir -p /etc/apt/keyrings \ |
| 14 | + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ |
| 15 | + | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ |
| 16 | + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" \ |
| 17 | + > /etc/apt/sources.list.d/nodesource.list \ |
| 18 | + && apt-get update \ |
| 19 | + && apt-get install -y nodejs \ |
| 20 | + && rm -rf /var/lib/apt/lists/* |
12 | 21 |
|
13 | 22 | WORKDIR /usr/src/app |
14 | 23 |
|
15 | | -ENV PYTHONDONTWRITEBYTECODE 1 |
16 | | -ENV PYTHONUNBUFFERED 1 |
| 24 | +ENV PYTHONDONTWRITEBYTECODE=1 |
| 25 | +ENV PYTHONUNBUFFERED=1 |
17 | 26 |
|
18 | | -COPY . . |
19 | | -RUN pip install --upgrade pip && pip wheel --no-cache-dir --wheel-dir /usr/src/app/wheels -r requirements.txt |
| 27 | +COPY requirements.txt . |
| 28 | + |
| 29 | +RUN pip install --upgrade pip \ |
| 30 | + && pip wheel --wheel-dir /wheels -r requirements.txt |
| 31 | + |
| 32 | +RUN pip install --no-cache-dir /wheels/* |
20 | 33 |
|
21 | 34 | COPY package.json package-lock.json ./ |
22 | | -RUN npm install |
23 | 35 |
|
24 | | -RUN pip install -r requirements.txt && npm run tailwind:build && python manage.py collectstatic --noinput |
| 36 | +RUN npm ci |
25 | 37 |
|
26 | | -FROM python:3.13-slim-bookworm |
| 38 | +COPY . . |
27 | 39 |
|
28 | | -RUN apt-get update && apt-get upgrade -y && apt-get clean |
| 40 | +RUN npm run tailwind:build |
29 | 41 |
|
30 | | -RUN mkdir -p /home/app |
| 42 | +RUN python manage.py collectstatic --noinput |
31 | 43 |
|
32 | | -RUN addgroup --system app && adduser --system --group app |
| 44 | +FROM python:3.13-slim-bookworm |
| 45 | + |
| 46 | +RUN apt-get update \ |
| 47 | + && apt-get upgrade -y \ |
| 48 | + && rm -rf /var/lib/apt/lists/* |
| 49 | + |
| 50 | +RUN addgroup --system app \ |
| 51 | + && adduser --system --group app |
33 | 52 |
|
34 | 53 | ENV HOME=/home/app |
35 | 54 | ENV APP_HOME=/home/app/web |
36 | | -RUN mkdir $APP_HOME |
| 55 | + |
| 56 | +RUN mkdir -p $APP_HOME |
| 57 | + |
37 | 58 | WORKDIR $APP_HOME |
38 | 59 |
|
39 | | -ENV PYTHONDONTWRITEBYTECODE 1 |
40 | | -ENV PYTHONUNBUFFERED 1 |
41 | | -ENV ENVIRONMENT prod |
42 | | -ENV TESTING 0 |
43 | | -ENV PYTHONPATH $APP_HOME |
| 60 | +ENV PYTHONDONTWRITEBYTECODE=1 |
| 61 | +ENV PYTHONUNBUFFERED=1 |
| 62 | +ENV ENVIRONMENT=prod |
| 63 | +ENV TESTING=0 |
| 64 | +ENV PYTHONPATH=$APP_HOME |
44 | 65 |
|
45 | | -COPY --from=builder /usr/src/app/wheels /wheels |
| 66 | +COPY --from=builder /wheels /wheels |
46 | 67 | COPY --from=builder /usr/src/app/requirements.txt . |
47 | | -COPY --from=builder /usr/src/app/media $APP_HOME/media |
48 | | -RUN pip install --upgrade pip |
49 | | -RUN pip install --no-cache /wheels/* |
50 | 68 |
|
51 | | -COPY . $APP_HOME |
| 69 | +RUN pip install --upgrade pip \ |
| 70 | + && pip install --no-cache-dir /wheels/* |
| 71 | + |
| 72 | +COPY --from=builder /usr/src/app $APP_HOME |
52 | 73 |
|
53 | 74 | RUN chown -R app:app $HOME |
54 | 75 |
|
|
0 commit comments