FROM python:3.10 AS python_build

ENV POETRY_HOME=/usr/local

COPY pyproject.toml poetry.lock ./
RUN apt-get update \
 && apt-get install -y --no-install-recommends \
      python3-dev libxmlsec1 libxmlsec1-dev \
      libpq-dev libmariadb-dev \
 && rm -rf /var/cache/apt
RUN curl -sSL https://install.python-poetry.org | python3 -
RUN poetry config virtualenvs.create false \
  && poetry install --with prod

FROM node:buster AS assets_build
COPY package-lock.json package.json webpack.config.js /
RUN npm ci
COPY assets /assets
RUN /node_modules/.bin/webpack-cli

FROM python:3.10-slim
RUN apt-get update \
 && apt-get install -y --no-install-recommends \
      zlib1g libfreetype6 libjpeg62-turbo libopenjp2-7 libtiff6 liblcms2-2 \
      libpq5 libmariadb3 libxmlsec1 xmlsec1 \
 && rm -rf /var/cache/apt \
 && mkdir /app
WORKDIR /app

COPY --from=python_build /usr/local/ /usr/local/
COPY --from=assets_build /hiboo/static /app/hiboo/static
COPY hiboo /app/hiboo
COPY migrations /app/migrations

ENV FLASK_APP hiboo
CMD gunicorn -w 4 -b :80 --access-logfile - --error-logfile - --preload 'hiboo:create_app()'