Spaces:
Building
Building
# syntax = docker/dockerfile:1.2 | |
FROM continuumio/miniconda3:24.1.2-0 | |
# install os dependencies including xauth for xvfb | |
RUN mkdir -p /usr/share/man/man1 | |
RUN apt-get update && \ | |
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ | |
ca-certificates \ | |
curl \ | |
vim \ | |
sudo \ | |
default-jre \ | |
git \ | |
gcc \ | |
build-essential \ | |
wget \ | |
xvfb \ | |
xauth \ | |
&& rm -rf /var/lib/apt/lists/* | |
RUN conda install python=3.8.13 -y | |
# Install Python and model dependencies | |
RUN pip install openmim | |
RUN pip install torch==2.0.0 | |
RUN mim install mmcv-full==1.7.0 | |
RUN pip install mmdet==2.27.0 | |
RUN pip install torchserve | |
RUN pip install mmpose==0.29.0 | |
RUN pip install torchvision==0.15.1 | |
RUN pip install numpy==1.24.4 scikit-image scipy opencv-python requests pyyaml flask glfw PyOpenGL Pillow shapely tqdm | |
# bugfix for xtcocoapi, a dependency of mmpose | |
RUN git clone https://github.com/jin-s13/xtcocoapi.git | |
WORKDIR xtcocoapi | |
RUN pip install -r requirements.txt | |
RUN python setup.py install | |
WORKDIR / | |
# prep torchserve | |
RUN mkdir -p /home/torchserve/model-store | |
RUN wget https://github.com/facebookresearch/AnimatedDrawings/releases/download/v0.0.1/drawn_humanoid_detector.mar -P /home/torchserve/model-store/ | |
RUN wget https://github.com/facebookresearch/AnimatedDrawings/releases/download/v0.0.1/drawn_humanoid_pose_estimator.mar -P /home/torchserve/model-store/ | |
COPY config.properties /home/torchserve/config.properties | |
# Create a non-root user with UID 1000 | |
RUN adduser --disabled-password --gecos '' --uid 1000 appuser | |
WORKDIR /app | |
COPY setup.py /app/setup.py | |
COPY animated_drawings /app/animated_drawings | |
COPY app.py /app/app.py | |
COPY examples /app/examples | |
RUN pip install -e . | |
# Pre-create directories and set permissions | |
RUN mkdir -p uploads_gradio outputs_gradio flagged && \ | |
chown -R appuser:appuser /app | |
USER appuser | |
EXPOSE 7860 | |
# Start TorchServe, warm-up models, then run the app. | |
# Using xvfb-run for headless rendering. | |
CMD sh -c "\ | |
torchserve --start --ncs --ts-config /home/torchserve/config.properties && \ | |
sleep 15 && \ | |
# Warm-up requests with a small test image to load models into memory. | |
curl -X POST http://localhost:8080/predictions/drawn_humanoid_detector -F image=@/app/examples/test.png && \ | |
curl -X POST http://localhost:8080/predictions/drawn_humanoid_pose_estimator -F image=@/app/examples/test.png && \ | |
xvfb-run -a python app.py \ | |
" |