1
1
# syntax=docker/dockerfile:1.2
2
2
3
- FROM blakeblackshear/frigate-nginx:1.0.2 as nginx
3
+ FROM blakeblackshear/frigate-nginx:1.0.2 AS nginx
4
4
5
- FROM debian:11 as wheels
5
+ FROM debian:11 AS wheels
6
6
ARG TARGETARCH
7
7
8
8
ENV DEBIAN_FRONTEND=noninteractive
@@ -44,8 +44,8 @@ RUN pip3 install -r requirements.txt
44
44
COPY requirements-wheels.txt /requirements-wheels.txt
45
45
RUN pip3 wheel --wheel-dir=/wheels -r requirements-wheels.txt
46
46
47
- # Frigate Container
48
- FROM debian:11-slim
47
+ # Frigate deps (ffmpeg, python, nginx, go2rtc, s6-overlay, etc)
48
+ FROM debian:11-slim AS deps
49
49
ARG TARGETARCH
50
50
51
51
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
@@ -65,7 +65,7 @@ RUN --mount=type=bind,from=wheels,source=/wheels,target=/wheels \
65
65
gnupg \
66
66
wget \
67
67
procps \
68
- unzip tzdata libxml2 xz-utils \
68
+ unzip locales tzdata libxml2 xz-utils \
69
69
python3-pip \
70
70
# add raspberry pi repo
71
71
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9165938D90FDDD2E \
@@ -94,10 +94,12 @@ RUN --mount=type=bind,from=wheels,source=/wheels,target=/wheels \
94
94
fi \
95
95
# arch specific packages
96
96
&& if [ "${TARGETARCH}" = "amd64" ]; then \
97
- echo 'deb http://deb.debian.org/debian testing main non-free' >> /etc/apt/sources.list.d/deb.list \
97
+ # Use debian testing repo only for hwaccel packages
98
+ echo 'deb http://deb.debian.org/debian testing main non-free' > /etc/apt/sources.list.d/debian-testing.list \
98
99
&& apt-get -qq update \
99
100
&& apt-get -qq install --no-install-recommends --no-install-suggests -y \
100
- mesa-va-drivers libva-drm2 intel-media-va-driver-non-free i965-va-driver libmfx1; \
101
+ mesa-va-drivers libva-drm2 intel-media-va-driver-non-free i965-va-driver libmfx1 \
102
+ && rm -f /etc/apt/sources.list.d/debian-testing.list; \
101
103
fi \
102
104
&& if [ "${TARGETARCH}" = "arm64" ]; then \
103
105
apt-get -qq install --no-install-recommends --no-install-suggests -y \
@@ -133,12 +135,6 @@ COPY labelmap.txt /labelmap.txt
133
135
RUN wget -q https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite -O /edgetpu_model.tflite
134
136
RUN wget -q https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess.tflite -O /cpu_model.tflite
135
137
136
- WORKDIR /opt/frigate/
137
- ADD frigate frigate/
138
- ADD migrations migrations/
139
-
140
- COPY web/dist web/
141
-
142
138
COPY docker/rootfs/ /
143
139
144
140
# s6-overlay
@@ -156,4 +152,51 @@ EXPOSE 8555
156
152
157
153
ENTRYPOINT ["/init" ]
158
154
155
+ # Frigate deps with Node.js and NPM
156
+ FROM deps AS deps-node
157
+
158
+ # Install Node 16
159
+ RUN wget -qO- https://deb.nodesource.com/setup_16.x | bash - \
160
+ && apt-get install -y nodejs \
161
+ && npm install -g npm@9
162
+
163
+ # Devcontainer
164
+ FROM deps-node AS devcontainer
165
+
166
+ WORKDIR /workspace/frigate
167
+
168
+ RUN apt-get update \
169
+ && apt-get install make -y \
170
+ && rm -rf /var/lib/apt/lists/*
171
+
172
+ RUN --mount=type=bind,source=./requirements-dev.txt,target=/workspace/frigate/requirements-dev.txt \
173
+ pip3 install -r requirements-dev.txt
174
+
175
+ CMD ["sleep" , "infinity" ]
176
+
177
+
178
+ # Frigate web build
179
+ FROM deps-node AS web-build
180
+
181
+ WORKDIR /work
182
+ COPY web/package.json web/package-lock.json ./
183
+ RUN npm install
184
+
185
+ COPY web/ ./
186
+ RUN npm run build
187
+
188
+ # Frigate web dist files
189
+ FROM scratch AS web-dist
190
+
191
+ COPY --from=web-build /work/dist/ /
192
+
193
+
194
+ # Frigate final container
195
+ FROM deps
196
+
197
+ WORKDIR /opt/frigate/
198
+ COPY frigate frigate/
199
+ COPY migrations migrations/
200
+ COPY --from=web-dist / web/
201
+
159
202
CMD ["python3" , "-u" , "-m" , "frigate" ]
0 commit comments