FROM python:3.11.1-alpine3.17 AS backend

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV PIP_DISABLE_PIP_VERSION_CHECK=1 

WORKDIR /code

RUN apk --no-cache add \
    "libpq~=15" \
    "libxslt~=1.1" \
    "nodejs-current~=19" \
    "xmlsec~=1.2"

COPY requirements.txt ./
COPY requirements ./requirements
RUN apk add --no-cache libffi-dev
RUN apk add --no-cache --virtual .build-deps \
    "bash~=5.2" \
    "g++~=12.2" \
    "gcc~=12.2" \
    "cargo~=1.64" \
    "git~=2" \
    "make~=4.3" \
    "postgresql13-dev~=13" \
    "libc-dev" \
    "linux-headers" \
    && \
    pip install -r requirements.txt --compile --no-cache-dir \
    && \
    apk del .build-deps


RUN addgroup -S plane && \
    adduser -S captain -G plane

RUN chown captain.plane /code

USER captain

# Add in Django deps and generate Django's static files
COPY manage.py manage.py
COPY plane plane/
COPY templates templates/

COPY gunicorn.config.py ./
USER root
RUN apk --no-cache add "bash~=5.2"
COPY ./bin ./bin/

RUN chmod +x ./bin/takeoff ./bin/worker ./bin/beat
RUN chmod -R 777 /code

USER captain

# Expose container port and run entry point script
EXPOSE 8000

# CMD [ "./bin/takeoff" ]