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