51 lines
1.2 KiB
Docker
51 lines
1.2 KiB
Docker
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" ]
|