nanee-animation / Dockerfile
ygauravyy's picture
Update Dockerfile
91eada4 verified
raw
history blame
2.44 kB
# 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 \
"