diff --git a/Dockerfile b/Dockerfile index 24cadc4e..c82069ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,38 @@ -# build svelte app -FROM node:17-alpine as npm-build -WORKDIR /install -COPY app/frontend/package*.json ./ -RUN npm install -COPY app/frontend/src ./src -COPY app/frontend/public ./public -COPY app/frontend/rollup.config.js ./ -RUN npm run build - -# build python dependencies -FROM python:3.10-alpine -ENV PYTHONUNBUFFERED 1 -WORKDIR /app -RUN apk update &&\ - apk add musl-dev build-base gcc libffi-dev libressl-dev postgresql-dev mariadb-dev nodejs npm iputils nmap curl bash &&\ - rm -rf /var/cache/apk/* -COPY app/backend/requirements.txt . -RUN python -m pip install --no-cache-dir --upgrade pip &&\ - pip install --no-cache-dir -r requirements.txt &&\ - apk del build-base gcc libffi-dev libressl-dev postgresql-dev -COPY app/backend ./backend -COPY --from=npm-build /install ./frontend -COPY app/run.sh ./ - -CMD ["./run.sh"] +FROM debian:bullseye-slim as base + +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/src ./src +COPY app/frontend/public ./public +COPY app/frontend/rollup.config.js ./ +RUN npm install +RUN npm run build + +FROM base +WORKDIR /app +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"] diff --git a/app/run.sh b/app/run.sh index e8d558fc..5f7b2b32 100755 --- a/app/run.sh +++ b/app/run.sh @@ -24,10 +24,10 @@ python3 manage.py makemigrations python3 manage.py migrate python3 manage.py collectstatic --noinput python3 manage.py shell < setup.py -celery -A backend worker & -celery -A backend beat & -gunicorn --bind 0.0.0.0:"$DJANGO_PORT" --workers 4 backend.asgi:application -k uvicorn.workers.UvicornWorker & - +python3 -m celery -A backend worker & +python3 -m celery -A backend beat & +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 npm start diff --git a/docker-compose-sqlite.yml b/docker-compose-sqlite.yml index 6f4f6006..466e4968 100644 --- a/docker-compose-sqlite.yml +++ b/docker-compose-sqlite.yml @@ -2,7 +2,8 @@ version: "3" services: upsnap_django: container_name: upsnap_django - image: seriousm4x/upsnap:latest + #image: seriousm4x/upsnap:latest + build: . network_mode: host restart: unless-stopped environment: