You've already forked snikket-web-portal
Merge pull request #108 from snikket-im/feature/multi-stage-dockerfile
Dockerfile: Split build into multiple stages
This commit is contained in:
55
Dockerfile
55
Dockerfile
@@ -1,7 +1,13 @@
|
|||||||
FROM debian:buster-slim
|
FROM debian:buster-slim AS build
|
||||||
|
|
||||||
ARG BUILD_SERIES=dev
|
RUN set -eu; \
|
||||||
ARG BUILD_ID=0
|
export DEBIAN_FRONTEND=noninteractive ; \
|
||||||
|
apt-get update ; \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
python3 python3-pip python3-setuptools python3-wheel \
|
||||||
|
libpython3-dev \
|
||||||
|
make build-essential \
|
||||||
|
netcat;
|
||||||
|
|
||||||
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
||||||
COPY build-requirements.txt /opt/snikket-web-portal/build-requirements.txt
|
COPY build-requirements.txt /opt/snikket-web-portal/build-requirements.txt
|
||||||
@@ -11,32 +17,41 @@ COPY babel.cfg /opt/snikket-web-portal/babel.cfg
|
|||||||
|
|
||||||
WORKDIR /opt/snikket-web-portal
|
WORKDIR /opt/snikket-web-portal
|
||||||
|
|
||||||
RUN set -eu; \
|
RUN pip3 install -r requirements.txt; \
|
||||||
export DEBIAN_FRONTEND=noninteractive ; \
|
|
||||||
apt-get update ; \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
python3 python3-pip python3-setuptools python3-wheel \
|
|
||||||
libpython3-dev \
|
|
||||||
make build-essential \
|
|
||||||
netcat \
|
|
||||||
; \
|
|
||||||
pip3 install -r requirements.txt; \
|
|
||||||
pip3 install -r build-requirements.txt; \
|
pip3 install -r build-requirements.txt; \
|
||||||
make; \
|
make;
|
||||||
pip3 uninstall -yr build-requirements.txt; \
|
|
||||||
apt-get remove -y build-essential make libpython3-dev; \
|
|
||||||
apt-get autoremove -y; \
|
FROM debian:buster-slim
|
||||||
pip3 install hypercorn; \
|
|
||||||
rm -rf /root/.cache; \
|
ARG BUILD_SERIES=dev
|
||||||
apt-get clean ; rm -rf /var/lib/apt/lists
|
ARG BUILD_ID=0
|
||||||
|
|
||||||
COPY docker/env.py /etc/snikket-web-portal/env.py
|
COPY docker/env.py /etc/snikket-web-portal/env.py
|
||||||
|
|
||||||
ENV SNIKKET_WEB_PYENV=/etc/snikket-web-portal/env.py
|
ENV SNIKKET_WEB_PYENV=/etc/snikket-web-portal/env.py
|
||||||
|
|
||||||
ENV SNIKKET_WEB_PROSODY_ENDPOINT=http://127.0.0.1:5280/
|
ENV SNIKKET_WEB_PROSODY_ENDPOINT=http://127.0.0.1:5280/
|
||||||
|
|
||||||
HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765}
|
HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765}
|
||||||
|
|
||||||
|
RUN set -eu; \
|
||||||
|
export DEBIAN_FRONTEND=noninteractive ; \
|
||||||
|
apt-get update ; \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
python3 python3-pip python3-setuptools python3-wheel; \
|
||||||
|
apt-get clean ; rm -rf /var/lib/apt/lists; \
|
||||||
|
pip3 install hypercorn; \
|
||||||
|
rm -rf /root/.cache;
|
||||||
|
|
||||||
|
WORKDIR /opt/snikket-web-portal
|
||||||
|
|
||||||
|
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
||||||
|
RUN pip3 install -r requirements.txt; rm -rf /root/.cache;
|
||||||
|
|
||||||
|
COPY --from=build /opt/snikket-web-portal/snikket_web/ /opt/snikket-web-portal/snikket_web
|
||||||
|
COPY babel.cfg /opt/snikket-web-portal/babel.cfg
|
||||||
|
|
||||||
RUN echo "$BUILD_SERIES $BUILD_ID" > /opt/snikket-web-portal/.app_version
|
RUN echo "$BUILD_SERIES $BUILD_ID" > /opt/snikket-web-portal/.app_version
|
||||||
|
|
||||||
ADD docker/entrypoint.sh /entrypoint.sh
|
ADD docker/entrypoint.sh /entrypoint.sh
|
||||||
|
|||||||
Reference in New Issue
Block a user