File size: 2,755 Bytes
6eb6110
d111f0e
6eb6110
d111f0e
 
 
6eb6110
d111f0e
6eb6110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d111f0e
 
 
6eb6110
 
 
d111f0e
 
6eb6110
 
 
d111f0e
6eb6110
d111f0e
6eb6110
d111f0e
 
6eb6110
 
 
 
 
 
d111f0e
6eb6110
 
 
 
 
 
d111f0e
6eb6110
 
 
 
 
 
 
 
 
d111f0e
6eb6110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d111f0e
 
6eb6110
d111f0e
6eb6110
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
## Build time
# Use the specified Python runtime as a parent image
FROM docker.io/nvidia/cuda:12.1.0-devel-ubuntu22.04@sha256:e3a8f7b933e77ecee74731198a2a5483e965b585cea2660675cf4bb152237e9b AS build

# Set the working directory in the container
WORKDIR /usr/src/app
COPY packages.txt .

ENV CUDA_HOME=/usr/local/cuda \
    TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0 7.5 8.0 8.6+PTX" \
    PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1


# Delete nvidia apt list and Install required packages
RUN DEBIAN_FRONTEND=noninteractive \
    && rm -rf /etc/apt/sources.list.d/cuda.list /etc/apt/sources.list.d/nvidia-ml.list \
    && apt-key del 7fa2af80 \
    && apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub \
    && apt-get -yq update \
    && apt-get install --no-install-recommends -yq \
        apt-transport-https \
        ca-certificates \
        $(cat packages.txt) \
        python3 \
        python3-dev \
        python3-pip \
        python3-venv \
        ffmpeg \
        libsm6 \
        libxext6 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Setup virtual env
RUN python3 -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"

# Install any needed packages specified in requirements.txt
COPY requirements.txt .
RUN --mount=type=cache,id=pip,target=/root/.cache \
    pip install -r requirements.txt

# Copy grounding dino ops
WORKDIR /usr/src/app/models/GroundingDINO/ops
COPY models/GroundingDINO/ops .

# Run the setup script and the test script
RUN CC=/usr/bin/gcc-11 python3 setup.py build && \
    pip install .

## Runtime
# Use the specified Python runtime as a parent image
FROM ubuntu:22.04

ENV CUDA_HOME=/usr/local/cuda \
    TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0 7.5 8.0 8.6+PTX" \
    PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PATH="/opt/venv/bin:/home/user/.local/bin:$PATH" \
    HOME=/home/user

RUN DEBIAN_FRONTEND=noninteractive apt-get -yq update && apt-get install --no-install-recommends -yq \
    python3 \
    python3-dev \
    python3-pip \
    ffmpeg \
    libsm6 \
    libxext6 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
RUN useradd -m -u 1000 user && chown -R user /app

COPY --from=build --chown=user /opt/venv /opt/venv

COPY --chown=user checkpoints checkpoints
COPY --chown=user checkpoint_best_regular.pth .
COPY --chown=user *.jpg *.JPG ./
COPY --chown=user datasets datasets
COPY --chown=user groundingdino groundingdino
COPY --chown=user models models
COPY --chown=user util util
COPY --chown=user app.py cfg_app.py ./

USER user
# Expose the port Gradio will run on
EXPOSE 7860
ENV GRADIO_SERVER_NAME="0.0.0.0"
# Default command to run the Gradio app
CMD ["/opt/venv/bin/python3", "app.py"]