use debian container, shrink size by half

This commit is contained in:
Maxi Quoß
2022-02-24 00:48:05 +01:00
parent 00b458dc95
commit b9342e8d0e
3 changed files with 44 additions and 31 deletions

View File

@@ -1,26 +1,38 @@
# build svelte app FROM debian:bullseye-slim as base
FROM node:17-alpine as npm-build
WORKDIR /install FROM base as python-build
ENV PYTHONUNBUFFERED 1
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /python-build
RUN apt-get update &&\
apt-get install -y --no-install-recommends build-essential python3 python3-dev python3-pip python3-venv default-libmysqlclient-dev libpq-dev &&\
python3 -m venv /python-build/venv
ENV PATH="/python-build/venv/bin:$PATH"
COPY app/backend/requirements.txt .
RUN python3 -m pip install --no-cache-dir --upgrade pip &&\
pip install --no-cache-dir -r requirements.txt
FROM node:17-bullseye-slim as node-build
WORKDIR /node-build
COPY app/frontend/package*.json ./ COPY app/frontend/package*.json ./
RUN npm install
COPY app/frontend/src ./src COPY app/frontend/src ./src
COPY app/frontend/public ./public COPY app/frontend/public ./public
COPY app/frontend/rollup.config.js ./ COPY app/frontend/rollup.config.js ./
RUN npm install
RUN npm run build RUN npm run build
# build python dependencies FROM base
FROM python:3.10-alpine
ENV PYTHONUNBUFFERED 1
WORKDIR /app WORKDIR /app
RUN apk update &&\ ENV PYTHONUNBUFFERED 1
apk add musl-dev build-base gcc libffi-dev libressl-dev postgresql-dev mariadb-dev nodejs npm iputils nmap curl bash &&\ ENV DEBIAN_FRONTEND=noninteractive
rm -rf /var/cache/apk/* RUN apt-get update &&\
COPY app/backend/requirements.txt . apt-get install -y --no-install-recommends nodejs npm iputils-ping nmap &&\
RUN python -m pip install --no-cache-dir --upgrade pip &&\ apt-get clean &&\
pip install --no-cache-dir -r requirements.txt &&\ rm -rf /var/lib/{apt,dpkg,cache,log}/
apk del build-base gcc libffi-dev libressl-dev postgresql-dev COPY --from=python-build /python-build/venv /app/venv
ENV PATH="/app/venv/bin:$PATH"
COPY --from=node-build /node-build ./frontend
COPY app/backend ./backend COPY app/backend ./backend
COPY --from=npm-build /install ./frontend
COPY app/run.sh ./ COPY app/run.sh ./
CMD ["./run.sh"] CMD ["./run.sh"]

View File

@@ -24,10 +24,10 @@ python3 manage.py makemigrations
python3 manage.py migrate python3 manage.py migrate
python3 manage.py collectstatic --noinput python3 manage.py collectstatic --noinput
python3 manage.py shell < setup.py python3 manage.py shell < setup.py
celery -A backend worker & python3 -m celery -A backend worker &
celery -A backend beat & python3 -m celery -A backend beat &
gunicorn --bind 0.0.0.0:"$DJANGO_PORT" --workers 4 backend.asgi:application -k uvicorn.workers.UvicornWorker & python3 -m gunicorn --bind 0.0.0.0:"$DJANGO_PORT" --workers 4 backend.asgi:application -k uvicorn.workers.UvicornWorker &
# start frontend
cd /app/frontend/ || exit cd /app/frontend/ || exit
npm start npm start

View File

@@ -2,7 +2,8 @@ version: "3"
services: services:
upsnap_django: upsnap_django:
container_name: upsnap_django container_name: upsnap_django
image: seriousm4x/upsnap:latest #image: seriousm4x/upsnap:latest
build: .
network_mode: host network_mode: host
restart: unless-stopped restart: unless-stopped
environment: environment: