diff --git a/.dockerignore b/.dockerignore index 9eb9db7..7468f88 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,3 +2,5 @@ .idea/ *.drawio .ruff_cache/ +*.sqlite3 +*.db diff --git a/Dockerfile b/Dockerfile index f265651..4596fe4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,11 +4,9 @@ FROM python:${PYTHON_VERSION}-alpine AS base ENV PYTHONUNBUFFERED=1 \ PIP_DISABLE_PIP_VERSION_CHECK=on \ - DEBIAN_FRONTEND=noninteractive \ POETRY_VIRTUALENVS_CREATE=false \ VENV=/root/.venv - RUN adduser --disabled-password --gecos "" django FROM base AS poetry @@ -19,6 +17,8 @@ RUN : \ && python -m venv ${VENV} \ && . ${VENV}/bin/activate \ && pip install poetry==${POETRY_VERSION} \ + && apk add gettext shadow \ + && apk -v cache clean \ && : ENV PATH="${VENV}/bin:${PATH}" @@ -33,11 +33,32 @@ RUN poetry install --no-interaction --no-ansi -vvv COPY scripts/ /usr/local/tmp-bin -RUN chmod +x /usr/local/tmp-bin/* \ +RUN : \ + && chmod +x /usr/local/tmp-bin/* \ && mv /usr/local/tmp-bin/* /usr/local/bin \ - && rmdir /usr/local/tmp-bin + && rmdir /usr/local/tmp-bin \ + && : ENTRYPOINT ["entrypoint.sh"] +CMD ["run.sh"] + +FROM deps AS development + +WORKDIR /app + +ARG GID=1000 +ARG UID=1000 + +RUN : \ + && groupmod django -g $GID \ + && usermod django -u $UID -g $GID \ + && : + +COPY --chown=django . . + +USER django + +CMD ["run-dev.sh"] FROM deps AS production @@ -45,4 +66,9 @@ WORKDIR /app COPY --chown=django . . -CMD ["run.sh"] +USER django + +RUN : \ + && ./manage.py compilemessages \ + && ./manage.py collectstatic --noinput \ + && : diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..584ef4c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +services: + api: + image: facturio + build: + context: . + dockerfile: Dockerfile + args: + GID: ${GID:-1000} + UID: ${UID:-1000} + target: development + ports: + - "8000:8000" + volumes: + - .:/app:Z diff --git a/scripts/run-dev.sh b/scripts/run-dev.sh new file mode 100644 index 0000000..b8c35b8 --- /dev/null +++ b/scripts/run-dev.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +./manage.py migrate +./manage.py runserver 0.0.0.0:8000 diff --git a/scripts/run.sh b/scripts/run.sh index 85477fa..a791c3a 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -1,5 +1,9 @@ #/bin/sh +echo "Migrating..." +./manage.py migrate >/dev/null + + gunicorn \ --threads 2 \ --workers 4 \