# build
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY ./frontend/package*.json ./
RUN npm install
COPY ./frontend/ .
RUN npm run build


FROM python:3.9-slim-buster

ENV PRODUCTION true
ENV POETRY_VERSION 1.1.6


RUN apt-get update && apt-get install -y --no-install-recommends \
    gcc g++ \
    curl \
    gnupg gnupg2 gnupg1  \
    apt-transport-https \
    debian-archive-keyring \
    debian-keyring \
    libpq-dev \
    libwebp-dev \
    && curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | apt-key add - \
    && curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee -a /etc/apt/sources.list.d/caddy-stable.list \
    && apt-get update && apt-get install -y --no-install-recommends \
    caddy \
    && apt autoremove \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get remove -y curl apt-transport-https debian-keyring g++ gnupg gnupg2 gnupg1 


RUN pip install --no-cache-dir "poetry==$POETRY_VERSION" 
RUN pip install --no-cache-dir "psycopg2-binary==2.8.6"

# project dependencies
WORKDIR /app
COPY pyproject.toml poetry.lock /app/
RUN poetry config virtualenvs.create false
RUN poetry install --no-dev --no-interaction --no-ansi

COPY ./mealie /app/mealie
RUN poetry config virtualenvs.create false \
    && poetry install --no-dev

#! Future
# COPY ./alembic /app
# COPY alembic.ini /app
COPY ./Caddyfile /app
COPY ./dev/data/templates /app/data/templates

# frontend build
COPY --from=build-stage /app/dist /app/dist

VOLUME [ "/app/data/" ]

EXPOSE 80

CMD /app/mealie/run.sh
