|
1 | | -FROM docker.io/library/python:3.9-alpine |
| 1 | +FROM docker.io/drycc/base:bullseye |
2 | 2 |
|
3 | | -COPY requirements.txt /app/requirements.txt |
| 3 | +RUN adduser --system \ |
| 4 | + --shell /bin/bash \ |
| 5 | + --disabled-password \ |
| 6 | + --home /app \ |
| 7 | + --group \ |
| 8 | + drycc |
4 | 9 |
|
5 | | -ENV PATH="/app/.venv/bin:${PATH}" |
| 10 | +ENV PYTHON_VERSION="3.10.2" \ |
| 11 | + HELM_VERSION="3.8.0" \ |
| 12 | + KUBECTL_VERSION="1.23.4" |
6 | 13 |
|
7 | 14 | COPY . /app |
8 | | - |
9 | 15 | WORKDIR /app |
10 | 16 |
|
11 | | -RUN apk add --update --virtual .build-deps \ |
12 | | - musl-dev \ |
13 | | - openssl-dev \ |
| 17 | +RUN buildDeps='musl-dev openssl'; \ |
| 18 | + install-packages $buildDeps \ |
| 19 | + && install-stack python $PYTHON_VERSION \ |
| 20 | + && install-stack helm $HELM_VERSION \ |
| 21 | + && install-stack kubectl $KUBECTL_VERSION && . init-stack \ |
14 | 22 | && python3 -m venv /app/.venv \ |
15 | 23 | && source /app/.venv/bin/activate \ |
16 | 24 | && pip3 install --disable-pip-version-check --no-cache-dir -r /app/requirements.txt \ |
17 | 25 | && pip3 install --disable-pip-version-check --no-cache-dir -r /app/dev_requirements.txt \ |
18 | | - && find /app/.venv /usr/local -type f -executable ! -path '*/cryptography*' -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \ |
19 | | - | tr ',' '\n' \ |
20 | | - | sort -u \ |
21 | | - | awk 'system("[[ -e /app/.venv/lib/" $1 " || -e /usr/local/lib/" $1 " ]]") == 0 { next } { print "so:" $1 }' \ |
22 | | - | xargs -rt apk add --no-cache --virtual .python-rundeps \ |
23 | | - && apk add --update --virtual .helmbroker-rundeps \ |
24 | | - $runDeps \ |
25 | | - git \ |
26 | | - ca-certificates \ |
27 | | - su-exec \ |
28 | | - bash \ |
29 | | - shadow \ |
30 | | - curl \ |
31 | | - && apk del .build-deps \ |
32 | | - && chmod +x /app/bin/* \ |
33 | | - && /app/bin/install |
34 | | -COPY . /app |
| 26 | + # cleanup |
| 27 | + && scanelp /app/.venv/lib > runtime.txt \ |
| 28 | + && apt-get purge -y --auto-remove $buildDeps \ |
| 29 | + && install-packages $(< runtime.txt) \ |
| 30 | + && apt-get autoremove -y \ |
| 31 | + && apt-get clean -y \ |
| 32 | + && rm -rf \ |
| 33 | + /usr/share/doc \ |
| 34 | + /usr/share/man \ |
| 35 | + /usr/share/info \ |
| 36 | + /usr/share/locale \ |
| 37 | + /var/lib/apt/lists/* \ |
| 38 | + /var/log/* \ |
| 39 | + /var/cache/debconf/* \ |
| 40 | + /etc/systemd \ |
| 41 | + /lib/lsb \ |
| 42 | + /lib/udev \ |
| 43 | + /usr/lib/`echo $(uname -m)`-linux-gnu/gconv/IBM* \ |
| 44 | + /usr/lib/`echo $(uname -m)`-linux-gnu/gconv/EBC* \ |
| 45 | + && mkdir -p /usr/share/man/man{1..8} \ |
35 | 46 |
|
36 | | -ENV PATH /app/.venv/bin:/app/bin:$PATH |
| 47 | +USER drycc |
| 48 | +WORKDIR /app |
37 | 49 | CMD ["/app/bin/boot"] |
38 | 50 | EXPOSE 8000 |
0 commit comments