Spaces:
Sleeping
Sleeping
File size: 2,593 Bytes
74c716c 1d375a3 74c716c 670aac3 6bd9f2a 74c716c 670aac3 1d375a3 670aac3 1d375a3 74c716c 1d375a3 74c716c c484b06 74c716c 0eea426 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
ARG PYTHON_VERSION="3.9.13"
ARG PLATFORM_NAME="linux/amd64"
FROM --platform=${PLATFORM_NAME} python:${PYTHON_VERSION}
# --- SYSTEM ARCHITECTURE
ARG TARGETPLATFORM
ARG TARGETARCH
ARG TARGETVARIANT
RUN printf "I'm building for TARGETPLATFORM=${TARGETPLATFORM}" \
&& printf ", TARGETARCH=${TARGETARCH}" \
&& printf ", TARGETVARIANT=${TARGETVARIANT} \n" \
&& printf "With uname -s : " && uname -s \
&& printf "and uname -m : " && uname -mm
# --- Environment variables
ENV REQUIREMENTS_FILE="requirements.txt"
ENV OUTDIR="/root"
ENV PROJECT_DIR="/home/user/ml"
ENV PROGRAM_DIR="/opt/program"
ENV HOME_DIR="/root/ml"
ENV LOCAL_DEV_DIR="docker"
ENV ALIASES_FILE="/root/aliases.sh"
ENV DEBIAN_FRONTEND=noninteractive
# --- Dockerfile Metadata
LABEL Maintainer="Victor Calderon"
# ---------------------- EXPOSING PORTS FOR APP -------------------------------
EXPOSE 7860
EXPOSE 8501
# --------------------- INSTALLING EXTRA PACKAGES -----------------------------
# --- Updating packages and installing packages at the system-level
RUN apt-get update && apt-get install -y apt-transport-https
RUN apt-get install -y \
git \
ssh \
&& \
# Cleaning out
rm -rf /var/lib/apt/lists/* && \
# Cleaning installs
apt-get clean
COPY ${REQUIREMENTS_FILE} "${HOME_DIR}/${REQUIREMENTS_FILE}"
RUN pip install --upgrade pip && \
python -m pip install --no-cache-dir -r "${HOME_DIR}/${REQUIREMENTS_FILE}"
# ------------------------- COPYING AND DIRECTORIES ---------------------------
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH
RUN mkdir -p ${PROJECT_DIR}
RUN chown user:user -R ${PROJECT_DIR}
COPY --chown=user ./src ${PROJECT_DIR}/src
# --------------------------- PYTHON-RELATED-LOCAL ----------------------------
# ----------------------------- PYTHON-SPECIFIC -------------------------------
# Set some environment variables. PYTHONUNBUFFERED keeps Python from
# buffering our standard output stream, which means that logs can be
# delivered to the user quickly. PYTHONDONTWRITEBYTECODE keeps Python
# from writing the .pyc files which are unnecessary in this case. We also
# update PATH so that the train and serve programs are found when the
# container is invoked.
ENV PYTHONUNBUFFERED=TRUE
ENV PYTHONDONTWRITEBYTECODE=TRUE
ENV PATH="${PROGRAM_DIR}:${PATH}"
ENV PYTHONPATH="${PROGRAM_DIR}:${PYTHONPATH}"
RUN chown user:user -R ${PROJECT_DIR}
WORKDIR ${PROJECT_DIR}
# CMD ["uvicorn", "src.api.index:app", "--host", "0.0.0.0","--port", "7860"]
CMD ["python", "src/app_service/app.py"]
|