FROM python:3.10.11-alpine3.17 as env-builder # handle optional arguments ARG INTERNAL_API_PORT=8010 ARG INTERNAL_WS_PORT=8011 RUN \ apk add --no-cache gcc musl-dev libffi-dev && \ pip install pip -U --no-cache-dir --prefer-binary && \ pip install poetry --no-cache-dir --prefer-binary WORKDIR /app COPY pyproject.toml . COPY poetry.lock . # create virtual environment RUN python -m venv /venv # set python thingies, set environment variables and activate virtual environment ENV \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ FAIRHOPPER_API_PORT=${INTERNAL_API_PORT} \ FAIRHOPPER_WS_PORT=${INTERNAL_WS_PORT} \ PATH="/venv/bin:$PATH" RUN \ # dump python dependencies into requirements file poetry export --without-hashes --format=requirements.txt > requirements.txt && \ # install python libs pip install -r requirements.txt --no-cache-dir --prefer-binary FROM python:3.10.11-alpine3.17 as runner WORKDIR /app COPY --from=env-builder /venv /venv # set python thingies and activate virtual environment ENV \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PATH="/venv/bin:$PATH" # copy all relevant files COPY ./.docker/* ./ COPY ./hopper ./hopper COPY ./main.py . ENTRYPOINT [ "/app/run.sh" ]