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" ]